40'OR'1'='1这很容易被sql注入?

mr_*_*air 3 php mysql sql sql-injection

我已经开发了一个简单的sql注入研究应用程序,我搜索速率<40并检索所有速率小于40的名称,但是当我将搜索作为40'或'1'='1时 ,它检索所有记录来自数据库表我知道如何解决这个问题但是我不知道40'OR'1'='1当我传递40时这个语句如何工作'或'1'='1可以任何人简单地告诉我当我发生什么时在搜索框中传递40'OR'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/>";
}

?>
Run Code Online (Sandbox Code Playgroud)

m.e*_*son 5

正是SQL Injection的工作原理

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

select *
from products
where productID = '[some parameter]'
Run Code Online (Sandbox Code Playgroud)

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

select *
from products
where productID = '40' OR '1'='1'
Run Code Online (Sandbox Code Playgroud)

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

防止这种情况的最佳方法是使用参数化查询.优秀的文章.