如果我收到错误 403,我的网站是否容易受到 SQL 注入攻击?

Is my site vulnerable to SQL injections if I get error 403?

我有一个登录表单,只是为了测试我尝试填写 "select * from accounts where username = test" 然后我按回车键看看会发生什么。我被重定向到此页面:

我应该担心 SQL 注射吗?或者这是正常反应?

编辑:此特定案例的 PHP 代码。

    $sql = "SELECT * FROM accounts WHERE Useremail=?";
    $stmt = mysqli_stmt_init($conn);
    if(!mysqli_stmt_prepare($stmt, $sql))
    {
        echo "There was an error whilst trying to connect to the database. Please re-submit your password reset request.";
        exit();
    }
    else
    {
        mysqli_stmt_bind_param($stmt, "s", $userEmail);
        mysqli_stmt_execute($stmt);
        $result = mysqli_stmt_get_result($stmt);
        if (!$row = mysqli_fetch_assoc($result))
        {
            header("Location: /reset-password.php?reset=fail");
            exit();
        }
    }

403 是未授权请求的标准 http 状态代码。看来至少在这一次测试中,该网站做了正确的事情。

这并不能保证它没有 SQL 注入漏洞。有句老话:

"Testing shows the presence of bugs, not their absence."

换句话说,可能有另一种方法可以使用 SQL 注入来利用此站点,而不是您测试过的那个。

您应该始终关注 SQL 注入漏洞并寻求使用安全编程技术来防止它们。

P.S.: 我希望你有权在这个网站上做渗透测试。在一些国家,未经许可擅自这样做是一种犯罪行为,人们因此受到起诉。我建议您避免对漏洞进行此类测试,除非它是您自己的站点,或者您已被其所有者专门雇用进行此类测试。