微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 40’OR’1’=’1这很容易被sql注入?

我开发了一个简单的sql注入研究应用程序,我搜索速率< 40并且检索所有速率低于40的名称,但是当我将搜索作为40'或'1'='1时
所以它从数据库表中检索所有记录
我知道如何解决这个问题,但我不知道40’OR’1’=’1当我传递40时这个陈述如何工作’或’1’=’1任何人都可以简单地告诉我当我通过40时会发生什么搜索框中’或’1’=’1?

希望快速积极的回应……

<?PHP
include("conn.PHP");

$get_rate = $_GET['rate'];

$query = "select * from `sqlinjection`.`products` WHERE `products`.`rate` < '".$get_rate."'";


$result=MysqL_query($query);

if($result == false)
{
    die(MysqL_error());

}

while($row=MysqL_fetch_array($result))
{

echo "Name".$row['srno']."<br/>";
echo "Name".$row['name']."<br/>";
echo "Rate".$row['rate']."<br/>";
}

?>

解决方法:

这正是sql Injection的工作原理

想象一下对数据库查询.通常它会是这样的:

select *
from products
where productID = '[some parameter]'

但在你的情况下,因为参数来自用户,并且该用户输入了40’OR’1’=’1你剩下的:

select *
from products
where productID = '40' OR '1'='1'

如果1 = 1,它将选择所有内容

防止这种情况的最佳方法是使用参数化查询. Excellent article.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐