Php 什么是SQL注入攻击。?通过一些基本的例子,介绍如何预防这些疾病

Php 什么是SQL注入攻击。?通过一些基本的例子,介绍如何预防这些疾病,php,mysql,sql-injection,Php,Mysql,Sql Injection,可能重复: 我在一个使用MYSQL数据库的PHP项目中工作。 我阅读了有关SQL注入的内容,但希望有一些基本示例。 如果发生袭击,会发生什么 这方面我是新手。 谢谢有很多话要说,但我只想说: 你应该看看这里: 作为总结: 基本上,如果您有这样一个SQL调用: "DELETE FROM Users WHERE InputtedName = '$name'" 人们可以在表单上输入:My Name'或inputedname!='我的名字 当用表单中输入的名称替换$name时,这将导致以下SQL

可能重复:

我在一个使用MYSQL数据库的PHP项目中工作。 我阅读了有关SQL注入的内容,但希望有一些基本示例。 如果发生袭击,会发生什么

这方面我是新手。
谢谢

有很多话要说,但我只想说:

  • 你应该看看这里:
作为总结:


基本上,如果您有这样一个SQL调用:

"DELETE FROM Users WHERE InputtedName = '$name'"
人们可以在表单上输入:
My Name'或inputedname!='我的名字

当用表单中输入的名称替换$name时,这将导致以下SQL调用:

"DELETE FROM Users WHERE InputtedName = 'My Name' OR InputtedName != 'My Name'"
这将删除您表中的所有内容!不好的!为了防止这种情况发生,您应该对所有用户输入的数据使用mysql\u real\u escape\u string()函数。

假设我有一个表“Users”,并且有人正在我的网站上注册帐户。他们输入用户名为
”;删除表用户
,这将提前终止我的INSERT语句并导致用户表被删除

一个好的经验法则是“清理”从用户那里收到的任何数据。要做到这一点,您需要使用PHP(已弃用)。一个更好的选择是,尽管它们更长,而且并不总是优雅

$stmt = $mysqli->prepare('select name from users where id = ?');
$stmt->bind_param($id,'s');
$id = 'some_id';
$stmt->execute();
$stmt->bind_result($name);
$stmt->fetch(); //variable $name now has the value of the first result

也许你也可以看到,正如你所想象的,这可以用很多方式来改变不应该被改变的信息。
'或'1'='1
使用得更多(没有人容易知道字段名)。所有mysql函数(包括
mysql\u real\u escape\u string
)都不推荐使用-1这无助于初学者理解漏洞或防御。我认为每个人都很清楚。公平地说,如果你解锁你的帖子(只需编辑一次),我将撤销我的-1。将Bobby表的链接直接更改为与问题相关的示例。