我看到很多php代码在stackoverflow上四处飘荡,字符串的转义太少了。
谁能
我也无法抗拒。
SQL注入是“一种代码注入技术,可利用应用程序数据库层中发生的安全漏洞”。换句话说,它的SQL代码 注入 作为一个查询中用户输入。
SQL注入可以操纵数据(删除,更新,添加ecc …)以及破坏或删除数据库表。虽然我不知道SQL注入操作脚本。
假设在您的PHP脚本中,您期望(作为用户输入)登录表单中的用户名和密码,这些名称和密码稍后将在查询中使用,例如:
SELECT Id FROM Users WHERE Name = $name AND Password = $password;
用户可以在里面插入$name和$password任何他喜欢的(例如槽的<input>)。假设他添加了一个名称,例如“ 1 OR 1 = 1; --”,查询现在将如下所示:
$name
$password
<input>
1 OR 1 = 1; --
SELECT Id FROM Users WHERE Name = 1 OR 1 = 1; -- AND Password = $password;
然后,;可以添加另一个查询或使脚本认为用户名和密码确实存在。
;
注意,这-- AND Password = $password;是一个SQL注释,因此将被忽略。
-- AND Password = $password;
如果您使用的是PHP <5,则应mysql_real_escape_string()先将其查找并使用它来转义用户输入,然后再将其嵌入查询中。
mysql_real_escape_string()
如果您使用的是PHP5 +,则应使用PDO或mysqli扩展名,它们可以通过准备好的语句来防止此问题。