0

可能重复:
在 PHP 中防止 SQL 注入的最佳方法?

我正在建立我的第一家在线商店,我正在自己编写 PHP 代码并使用 MySQL 数据库。我被告知,对输入进行数据验证非常重要,这样我的数据库就不会受到损害。有人可以告诉我要包括什么验证,或者推荐一个值得信赖的教程。

提前致谢

4

2 回答 2

1

在此站点中搜索“Sql 注入”。sql 注入攻击的一个常见来源是未经验证的用户输入,然后在发送到数据库之前进行可信连接。

例如,如果您的陈述是这样的:

select col1, col2 from mytable where id =' + <some variable> + ' and xyz = abc

(其中“某个变量”是刚刚传递给 SQL 的用户输入)

然后用户可以输入'xxx''; delete from mytable; --'

数据库得到的是:

select col1, col2 from mytable 
where id ='xxx'; delete from mytable; --' and xyz = abc

造成破坏。

所以这里的关键问题是:不要将未经验证的连接文本传递给您的数据库以供其执行

您可以通过多种方式实现此目的:

  • 检查输入是否有不需要的字符(很难涵盖所有内容)
  • 将您的 SQL 构建为参数化 SQL,即将用户输入绑定到参数
  • 调用存储过程(我喜欢它们,但它们不是每个人的一杯茶)

我会选择参数化 SQL,因为数据库驱动程序会将用户输入的所有内容绑定为单个值,同时将您的业务逻辑排除在数据库之外。

于 2012-10-24T13:12:15.440 回答
0

Mysql Validation 意味着你必须防止你的查询被 MySql 注入。请阅读以下内容以避免 mysql 注入。

http://rosstanner.co.uk/2012/01/php-mysql-preventing-mysql-injection/

于 2012-10-24T13:17:04.710 回答