【发布时间】:2011-06-12 14:01:47
【问题描述】:
我正在开发一个网站,我正在尝试保护连接部分。
我在$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;
}
}
}
?>
【问题讨论】:
-
google addlashes VS mysql_real_escape_string : sitepoint.com/forums/showthread.php?t=337881
-
有许多过时的教程建议将
addslashes()作为一种机制来逃避 SQL 查询中的内容。如果您正在从中学习其中之一,我建议您尝试找到更最新和更准确的东西。此外,extract($_POST)是一个很好的漏洞示例;不要这样做!顺便说一句,欢迎来到 StackOverflow。 -
这就够了,只要你使用的是单字节或 utb-8 编码。
-
然而你正在遭受最严重的注射,超出了
extract()功能。如果表单中有loginOk字段怎么办?..
标签: php sql security sql-injection