我正在开发一个网站,我试图确保连接部分的安全。
我在$login上使用了addslashes函数来阻止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;
}
}
}
?>发布于 2011-01-21 00:16:59
您应该使用mysql_real_escape_string来转义查询中的字符串输入参数。使用类型转换来清理数值参数,使用白名单清理标识符。
在引用的PHP页面中,有一个在登录表单中使用sql注入的示例。
一个更好的解决方案是使用预准备语句,您可以通过使用PDO或mysqli来实现。
发布于 2011-01-21 00:32:34
您正在以明文形式存储密码!这是一个重大的安全问题,如果我见过的话。解决方法:至少使用(每个用户)加盐的密码散列,例如here。
发布于 2011-01-21 00:18:12
使用:
mysql_real_escape_string($inputToClean);https://stackoverflow.com/questions/4749588
复制相似问题