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注入示例.
更好的解决方案是使用预准备语句,您可以使用PDO或mysqli来完成.