我想重写我的登录脚本为客户网站,以使他们更安全。我想知道我能在其中实现哪些最佳实践。密码保护的控制面板非常丰富,但在代码编写、速度和安全性方面,似乎很少能体现最佳实践。
我将使用PHP和MYSQL数据库。
我曾经使用过md5,但我发现sha256或sha512会更好(连同安全的哈希和salt)。
一些登录脚本在整个会话中记录ip地址,甚至记录用户代理,但我想避免这种情况,因为它与代理服务器不兼容。
我也有点落后于PHP 5中使用会话的最佳实践(上次我读到的是PHP 4),所以使用它的一些最佳实践会有所帮助。
谢谢。
发布于 2011-05-03 00:03:56
使用咸的单向散列(最好是SHA512使用http://au2.php.net/manual/en/function.hash.php).这样,如果有人真的黑了你的数据库,即使他们知道盐,他们也不能提取密码(没有彩虹表,这将是寻找SHA512)。
使用HTTPS。
当用户注册时,不要通过电子邮件将用户名/密码确认发送回用户。
如果您允许cookie‘记住我’-添加一个额外的登录访问管理和配置文件编辑功能。
如果用户输入了错误的密码,不要说他们的密码是错误的(比如他们一直都有“用户名或密码错误”)--这样的话,有效用户名的线索就更少了。
尝试实现屏幕名称与登录-这样,更少的用户会在用户列表上显示他们的登录名。
发布于 2013-05-13 15:51:03
发布于 2011-05-02 16:19:33
这里有一个建议:确保您的cookie不能被JS访问以防止盗窃,参见Jeff的HttpOnly :保护你的厨师文章
...Through聪明的构造,畸形的网址只是设法通过消毒液。当在浏览器中查看最后呈现的代码时,将从该远程服务器加载和执行脚本。...whoever加载了这个脚本注入的用户配置文件页面,无意中将他们的浏览器cookie传输到了一个邪恶的远程服务器!正如我们已经建立的那样,一旦有人为一个给定的网站拥有了你的浏览器cookie,他们基本上就拥有了你在那里的身份的王国钥匙……
https://softwareengineering.stackexchange.com/questions/73024
复制相似问题