我需要从字符串参数的文本列表生成 MySQL INSERT 和 UPDATE 语句。这基本上是将字符串插入占位符的问题,如下所示:
输入文件
apple
banana
orange
脚本(想象一个简单的 Ruby 或 Python 程序或 Bash 脚本)生成输出:
INSERT INTO fruits (name) values ('apple');
INSERT INTO fruits (name) values ('banana');
INSERT INTO fruits (name) values ('orange');
此输出随后将保存到一个文件中,该文件稍后将通过管道传输到 mysql
命令的 STDIN 中以更新数据库,就像使用 mysqldump
的输出一样。
但我想添加一些代码来防止意外或故意的 SQL 注入(inject)。我假设这首先是在输入文件条目中的任何单引号字符或反斜杠字符之前添加一个反斜杠。还有什么需要做的吗?我使用此网页作为引用:http://dev.mysql.com/doc/refman/5.0/en/mysql-real-escape-string.html
最佳答案
您需要先阅读一些关于“SQL 注入(inject)”以及如何预防的基础知识。提示:您需要了解如何使用占位符参数;这取决于所使用的数据库和数据库库。它可能就像放一个一样简单?您需要在何处放置参数(在您准备的 SQL 中),然后为 ?s 提供合适的值列表(在您执行查询时)。
关于mysql - 如何通过转义插入 MySQL 语句的字符串来手动防止 sql 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23524030/