防止SQL注入

Tom*_*uce 6 php sql security sql-injection

我正在开发一个网站,我正在努力保护连接部分.

我使用addslashes函数$login来停止SQL注入,但有些朋友告诉我安全性不够.但是,他们没有告诉我如何利用此漏洞.

我怎么能/你能破坏这段代码?我该如何保护它?

<?php

    if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) )
    {
        extract($_POST);
        $sql = "SELECT pseudo, sex, city, pwd FROM auth WHERE pseudo = '".addslashes($login)."'";
        $req = mysql_query($sql) or die('Erreur SQL');
        if (mysql_num_rows($req) > 0)
        {
            $data = mysql_fetch_assoc($req);
            if ($password == $data['pwd'])
            {
                $loginOK = true;
            }
        }
    }
    ?>
Run Code Online (Sandbox Code Playgroud)

ale*_*exn 14

您应该使用mysql_real_escape_string在查询中转义字符串输入参数.使用类型转换来清理数字参数和白名单以清理标识符.

在引用的PHP页面中,有一个登录表单中的sql注入示例.

更好的解决方案是使用预准备语句,您可以使用PDOmysqli来完成.


Pis*_*3.0 5

您以明文存储密码!如果我看到一个,这是一个重大的安全问题.怎么办有关:至少使用密码的(每用户)盐渍哈希,因为看到如这里.