【发布时间】:2014-08-17 23:46:05
【问题描述】:
我最近创建的一个网站遭到黑客入侵和污损。他们进入了一个自制的 CMS 来管理网站。他们能够检索我的用户名和密码的散列版本并将其发布在 Facebook 上。
现在我的问题是,他们是如何使用散列密码进入网站的?他们不需要先解密吗?他们为什么不在他们的 Facebook 帐户上发布密码的解密版本(当我看到很多其他网站张贴在那里并显示他们的人类可读密码时)。
这是我的验证码:
SELECT * FROM Admin WHERE Username = '$_POST[Username]' // This finds the username
if ($row[Password] == md5($_POST[Password])) {
Save Sessions here
}
虽然我现在已将 mysql_real_escape_string 添加到 SQL 查询中,因为这可能是漏洞。
有什么想法吗?
【问题讨论】:
-
不要使用 md5,使用某些版本的 sha。
-
是的,没有转义是个大问题。比
mysql_real_escape_string更好的是准备好的语句和参数化查询。 This is a good place to start on that topic. -
这是一个旁白,但为了更难破解您的散列密码(无论您使用的是 SHA 还是 MD5),您还应该使用盐并进行多次传递。
-
好的。感谢您的提示!我会试试这些。