【发布时间】:2019-08-26 14:56:47
【问题描述】:
我们被攻击了;黑客从下面代码中的
您能否指出这段代码中的问题以及可能的修复方法?
<?php
//login.php page code
//...
$user = $_POST['user'];
$pass = $_POST['password'];
//...
mysql_connect("127.0.0.1", "root", "");
mysql_select_db("xxxx");
$user = mysql_real_escape_string($user);
$pass = mysql_real_escape_string($pass);
$pass = hash("sha1", $pass, true);
//...
$query = "select user, pass from users where user='$user' and pass='$pass'";
//...
?>
【问题讨论】:
-
你不应该使用 SHA1 password hashes 或 MD5 password hashes 而你真的应该使用 PHP 的built-in functions 来处理密码安全。在散列之前,请确保您 don't escape passwords 或对它们使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。
-
请stop using
mysql_*functions。 These extensions 已在 PHP 7 中删除。了解 PDO 和 @987654329 的 prepared 语句@ 并考虑使用 PDO,it's really pretty easy。 这已经不好笑了。 -
真正的问题是这段代码的all。错误的密码散列、过时的 MySQL 函数、转义字符串、SQL 注入漏洞。这个制作多久了?
-
您如何确定这是 SQL 注入而不是暴力破解?还请显示代码的查询执行部分,它决定登录成功或无效。
标签: php sql security sql-injection owasp