易受 SQL 注入攻击

Posted

技术标签:

【中文标题】易受 SQL 注入攻击【英文标题】:Vulnerable to SQL injections 【发布时间】:2019-08-10 16:57:54 【问题描述】:

我正在做一个项目来寻找易受攻击的代码。这段代码 sn-p 是否容易受到 SQL 注入的攻击?

if(ISSET ($_POST['login']))
    $username = $_POST['username'];
    $password = $_POST['password'];
    $query = $conn->query("SELECT * FROM `admin` WHERE `username` = '$username' && `password` = '$password'") or die(mysqli_error());

【问题讨论】:

是的。认识Bobby Tables。 这是什么编程语言? 它的 php。很抱歉应该提到这一点。 【参考方案1】:

是的。最好使用Mysqli的参数化查询方式。

<?php

    if (isset($_POST['user']) && isset ($_POST['pass'])) 

        $user = mysql_real_escape_string ($_POST['user']),
        $pass = mysql_real_escape_string ($_POST['pass']);
        $conn = new mysqli("$db_host", "$db_user", "$db_pass", "$db");
        $sql = "select * from admin where username=? and password=?";
        $cmd = $conn->prepare($sql);
        $cmd->bind_param("ss", $user, $pass);
        $cmd->execute();
         ......
         ......
    else 
        echo "Username and password cant not be null !";
    
?>

【讨论】:

您的答案中的错误:混合来自mysql 扩展和mysqli 扩展的函数。使用参数时,转义输入也是多余的。还以明文形式存储密码,尽管这是基于 OP 的帖子。无论如何,这段代码不是一个很好的例子。

以上是关于易受 SQL 注入攻击的主要内容,如果未能解决你的问题,请参考以下文章

ruby on rails sql 注入 LIKE '%#argument% 易受攻击?

如何使我的登录页面易受 SQL 注入攻击?

如何使我的测试网站易受 SQL 注入攻击?

SQL注入初尝

防止 SQL 注入 - PDO,mysqli [重复]

jSQL注入 - 一个跨平台的SQL注入工具