加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 22:01:39 所属栏目:PHP教程 来源:网络整理
导读:我开发了一个简单的sql注入研究应用程序,我搜索速率 40并且检索所有速率低于40的名称,但是当我将搜索作为40'或'1'='1时 所以它从数据库表中检索所有记录 我知道如何解决这个问题,但我不知道40’OR’1’=’1当我传递40时这个陈述如何工作’或’1’=’1任何人
我开发了一个简单的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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读