我只是想知道是否有一种方法可以使用mysql_*
安全地为SQL注入创建代码。
我在log.php中有这段代码:
$username = $_POST['username'];
$password = $_POST['password'];
$status = $_POST['status'];
include("conn.php");
if($username && $password)
{
$query = mysql_query("SELECT * FROM student_users WHERE username='$username'");
if($query!=0)
{
while($rows = mysql_fetch_assoc($query))
{
$db_username = $rows['username'];
$db_password = $rows['password'];
}
if($username == $db_username && $password == $db_password)
{
header("location: stud.php");
$_SESSION['username'] = $db_username;
$_SESSION['stud_num'] = $db_stud_num;
break;
}
}
}
如何针对SQL注入进行测试?
我找到了一些http://127.0.0.1/test/index.php?username=%27%20or%201=1%20/*&password=1
可以用来测试我网站的SQL注入漏洞的想法。但是没有用。
我也尝试在输入字段1 OR 1 = 1; --
内输入内容,但仍然无效。
我知道这可能是因为我在我的代码中设置的条件,但我怎么知道SQL注入的其他黑客策略?
也许只是给我一些易于使用的工具来测试本地网站。
感谢您的启发:D
答案 0 :(得分:2)
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$status = mysql_real_escape_string($_POST['status']);
$query = mysql_query("SELECT * FROM student_users WHERE username='$username'");
答案 1 :(得分:2)
尽量不要使用mysql_ *代码。如果您有项目的开头,则将所有代码重写为mysqli或PDO。 (PDO更好。)
如果要在所有输入字段中使用mysql_ *,请使用mysql_real_escape_string。
您可以阅读更多Here