mysql - 如何通过转义插入 MySQL 语句的字符串来手动防止 sql 注入(inject)

标签 mysql

我需要从字符串参数的文本列表生成 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/

相关文章:

php - PHP/MySQL 的快速应用程序开发?

mysql - 如何通过条件计算左连接的行数

php - 使用 codeigniter 将变量传递给 SELECT 子句

javascript - 将 jquery 变量发送回 PHP 并在 mySQL 中使用

Mysql 未安装 - 尝试将其与 RoR 一起使用

mysql - 如何重命名 MySQL 中的主键约束?

php - 我的 PHP 页面没有保存数据

mysql - 查询3张表接收数据

php - 多变量传递 URL

mysql工作台不显示下一个结果按钮