Sql注入以及如何在php中验证它[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

以下代码是否容易受到Sql注入以及如何验证?

$query=("select * from table2 where username = '$username'and password='$password'");
$result=  mysqli_query($connect, $query);
       $row=  mysqli_fetch_assoc($result);
    if  ($username==$row['username']&&$password==$row['password'])
    {
        header('location:header.php');//to go header
        }
else
{
    header('location:insert_p.php');}
php sql-injection
1个回答
1
投票

是的,您的代码似乎容易受到SQL注入攻击。看看这一行:

$query=("select * from table2 where username = '$username' and password='$password'");

在这里,您将变量$username$password直接传递给数据库。如果$username包含像admin'; --这样的字符串,那么就不会检查密码。

How to validate?

只需确保您直接放入SQL语句的每个变量都是安全的。

Other solutions?

  • 你可以使用mysqli_real_escape_string()docs)来逃避像'这样的特殊角色。
  • 您可以使用预准备语句。它们将代码和值分开。 qazxsw poi
© www.soinside.com 2019 - 2024. All rights reserved.