繁体   English   中英

php安全登录

[英]php secure login

您如何看待此登录过程? 很安全吗?

当他们登录时,我首先检查用户名是否存在,如果确实存在,我会从用户那里抢走盐(每个用户都有唯一的盐),然后用张贴的密码重新哈希

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

然后我只是与

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

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

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

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

更进一步地意识到,在这种情况下克服安全性的最常见方法是通过社会工程学,在这种情况下,如何哈希数据等都无关紧要。(不是,您不应该这样做)只是说安全性是很多,并且它并不局限于存储和检索数据的方式。

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

这不安全。

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

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

在此处链接以获取更多注入安全性: 如何防止PHP中的SQL注入?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM