它是一个安全的mysql注射代码吗?请一些建议

时间:2014-10-15 05:47:19

标签: php mysql sql-injection

我正在为客户开发一个系统。我需要一些建议。这是防止sql注入的安全代码吗?

$username=$_POST["username"];
$password=md5($_POST["password"]);

$num_rows=mysql_num_rows(mysql_query("select * from table where username='$username' AND password='$password'"));

if($num_rows>0)
{
    echo "Logged in";
}
else 
{
    echo "Incorrect username or password";
}

提前感谢您的建议。 请详细说明您的答案为何上述代码不安全。谢谢 如果你没有任何答案,请不要投反对票。

2 个答案:

答案 0 :(得分:2)

不,代码对于SQL注入是不安全的,尤其是$username变量。您应该通过mysql_real_escape_string()转义变量。如果我是你,我会在用户名和密码中添加trim()函数,因为用户有时会在意外输入文本之前/之后添加空格。

更重要的是,停止使用已弃用的mysql_*函数。改为使用MySQLi / PDO。

注意:$password没问题,因为它是由md5()哈希生成的,它不包含导致SQL错误/注入的任何字符。

答案 1 :(得分:0)

上层代码不满足任何sql注入,如

' or '1'='1' -- 
' or '1'='1' ({ 
' or '1'='1' /*  

你怎么能说它是开放的sql injections.can你详细说明你的答案朋友?