php安全登录

时间:2009-12-05 20:27:42

标签: php security salt

您如何看待此登录程序?它非常安全吗?

当他们登录时我首先检查用户名是否存在,如果是,我从用户那里获取盐(每个用户都有独特的盐),我用发布的密码重新哈希

$pass = hash('sha256', $salt . $posted_password);

然后我只是与

进行比较
$check = mysql_query("SELECT * FROM users WHERE username = '".$username."' AND password = '".$pass."'") or die("MySQL Error: ".mysql_error());

2 个答案:

答案 0 :(得分:3)

我认为在失败时发布mysql错误不是一个好主意。

or die("MySQL Error: ".mysql_error());

说到这一点,我会说你回来的信息越少越好。提供可以告诉尝试登录的人是否是失败的用户名或密码的信息是不好的,这不仅告诉用户您正在使用哪种数据库,如何查询,等等。

进一步认识到,在这种情况下最常见的安全方法是通过社会工程来克服,在这种情况下,你如何散列数据等并不重要(不是你不应该)只是说安全性很高,并且不会限制自己存储和检索数据的方式。

例如,登录是通过加密线路完成的吗?用户拥有的密码强度是否有任何强制执行?用户登录后会发生什么,如何跟踪登录用户与仅访问网站的用户?你如何防止会话接管等。我不是这个主题的专家,但这是一个广泛的主题。也许你只想对你发布的代码发表评论,在这种情况下,我的顶级段落应该是你需要阅读的全部内容;)以及Crowe T. Robot的回答:)

答案 1 :(得分:2)

这不安全。

使用参数化查询,或使用mysql_real_escape_string确保阻止SQL注入。

除此之外,这是一种非常常见的登录技术,基本上是“标准”。

链接此处了解更多注射安全性: How can I prevent SQL injection in PHP?