一尘不染

SQL注入如何工作以及如何防止它

mysql

我看到很多php代码在stackoverflow上四处飘荡,字符串的转义太少了。

谁能

  1. 说明什么是SQL注入;
  2. 说明它可以对您的服务器,数据和代码执行的操作;
  3. 举例说明如何执行SQL注入
  4. 给php示例代码如何防止SQL注入

阅读 220

收藏
2020-05-17

共1个答案

一尘不染

我也无法抗拒。

SQL注入是“一种代码注入技术,可利用应用程序数据库层中发生的安全漏洞”。换句话说,它的SQL代码 注入 作为一个查询中用户输入。

SQL注入可以操纵数据(删除,更新,添加ecc …)以及破坏或删除数据库表。虽然我不知道SQL注入操作脚本。

假设在您的PHP脚本中,您期望(作为用户输入)登录表单中的用户名和密码,这些名称和密码稍后将在查询中使用,例如:

SELECT Id FROM Users WHERE Name = $name AND Password = $password;

用户可以在里面插入$name$password任何他喜欢的(例如槽的<input>)。假设他添加了一个名称,例如“ 1 OR 1 = 1; --”,查询现在将如下所示:

SELECT Id FROM Users WHERE Name = 1 OR 1 = 1; -- AND Password = $password;

然后,;可以添加另一个查询或使脚本认为用户名和密码确实存在。

注意,这-- AND Password = $password;是一个SQL注释,因此将被忽略。

如果您使用的是PHP <5,则应mysql_real_escape_string()先将其查找并使用它来转义用户输入,然后再将其嵌入查询中。

如果您使用的是PHP5
+,则应使用PDOmysqli扩展名,它们可以通过准备好的语句来防止此问题。

2020-05-17