Php 如何使此查询成为sql注入验证?

Php 如何使此查询成为sql注入验证?,php,sql,sql-injection,Php,Sql,Sql Injection,如何使此查询成为sql注入验证 $sql=mysql_query("SELECT * FROM updates ORDER BY item_id DESC LIMIT 16"); while($row=mysql_fetch_array($sql)) { $msg_id=$row['item_id']; $message=$row['item_content']; } 或者有人能给我看一些例子,或者给我发一个教程的链接吗 我对这个很陌生,如果有人能帮我,那就太好了!:) 该查询已经是“SQL注

如何使此查询成为sql注入验证

$sql=mysql_query("SELECT * FROM updates ORDER BY item_id DESC LIMIT 16");
while($row=mysql_fetch_array($sql))
{
$msg_id=$row['item_id'];
$message=$row['item_content'];
}
或者有人能给我看一些例子,或者给我发一个教程的链接吗 我对这个很陌生,如果有人能帮我,那就太好了!:)

该查询已经是“SQL注入证明”

当您获取外部字符串并将其连接到查询中而不使用绑定变量、转义或适当的清理时,就会发生SQL注入攻击

例如,如果您的查询如下所示:

$sql=mysql_query("SELECT * FROM updates where order_ref = '$order_ref' ORDER BY item_id DESC LIMIT 16");
$safe_order_ref = mysql_real_escape_string($order_ref);
$sql=mysql_query("SELECT * FROM updates where order_ref = '$safe_order_ref' ORDER BY item_id DESC LIMIT 16");
如果变量
$order\u ref
可能受到环境的影响(HTTP查询参数、命令行参数,基本上是任何可能受用户影响的参数),那么您就会遇到问题。如果有人可以将值传递到您的应用程序中,如“
”;从更新中删除;
”,那么您将遇到问题

在我上面的例子中,一个解决方案是首先像这样转义
$order\u ref
中的值:

$sql=mysql_query("SELECT * FROM updates where order_ref = '$order_ref' ORDER BY item_id DESC LIMIT 16");
$safe_order_ref = mysql_real_escape_string($order_ref);
$sql=mysql_query("SELECT * FROM updates where order_ref = '$safe_order_ref' ORDER BY item_id DESC LIMIT 16");

它已经是了,因为您没有使用任何用户输入来构造它。

是防注入的。当您从$\u GET、或$\u POST或$\u COOKIE集合中的多个字符串构造SQL时,就会发生注入。你的是静态的-没有注射的地方。

我的人。您只是从数据库中提取数据。当用户通过将在查询本身中使用的表单或GET变量(不建议使用GET)提供输入时,就会发生SQL注入

假设你有一个表格,上面写着某人的名字

您的SQL将如下所示:

$query='SELECT * FROM people WHERE name='.$_POST['name'];
您需要使用mysql\u real\u escape\u string()或其他一些SQL清理函数清理用户发布的数据

另一件事:没有什么是SQL注入的证据。似乎总有一个有趣的小方法可以利用。你想做的是让人们放弃它,让它如此耗时

坚持下去,兄弟

SQL注入是一种代码注入 利用安全漏洞的技术 系统中出现的漏洞 应用程序的数据库层。这个 当用户 输入被错误地过滤 用于字符串文字转义字符 嵌入SQL语句或用户 输入不是强类型,并且 因此意外地被执行。它是 一个更一般的类的实例 可能出现的漏洞 每当一个编程或脚本 语言是嵌入在另一种语言中的。 SQL注入攻击也是众所周知的 作为SQL插入攻击


有关更多详细信息,请参阅。阅读本文后,您应该知道为什么每个人都会说,您的查询已经是SQL注入证明。

嗯,没有任何东西可以
注入到查询中..来自用户,或者(这是许多人忘记的)来自任何可能的不可信源(而且受信任的来源也不应该被信任:它可能会遭受一些失败,被黑客攻击,…)@Pascal MARTIN:如果受信任的源已经被劫持,SQL注入是你最不担心的。不总是这样:在某些情况下,如果你插入数据库的数据不是你想要的,那不一定是灾难——只要它不会破坏你的数据库或应用程序。不,我很确定他的原始查询实际上是SQL I注射证明