首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP登录脚本中应该使用哪些最佳实践?

在PHP登录脚本中应该使用哪些最佳实践?
EN

Software Engineering用户
提问于 2011-05-02 15:53:09
回答 3查看 20.2K关注 0票数 28

我想重写我的登录脚本为客户网站,以使他们更安全。我想知道我能在其中实现哪些最佳实践。密码保护的控制面板非常丰富,但在代码编写、速度和安全性方面,似乎很少能体现最佳实践。

我将使用PHP和MYSQL数据库。

我曾经使用过md5,但我发现sha256或sha512会更好(连同安全的哈希和salt)。

一些登录脚本在整个会话中记录ip地址,甚至记录用户代理,但我想避免这种情况,因为它与代理服务器不兼容。

我也有点落后于PHP 5中使用会话的最佳实践(上次我读到的是PHP 4),所以使用它的一些最佳实践会有所帮助。

谢谢。

EN

回答 3

Software Engineering用户

发布于 2011-05-03 00:03:56

使用咸的单向散列(最好是SHA512使用http://au2.php.net/manual/en/function.hash.php).这样,如果有人真的黑了你的数据库,即使他们知道盐,他们也不能提取密码(没有彩虹表,这将是寻找SHA512)。

使用HTTPS。

当用户注册时,不要通过电子邮件将用户名/密码确认发送回用户。

如果您允许cookie‘记住我’-添加一个额外的登录访问管理和配置文件编辑功能。

如果用户输入了错误的密码,不要说他们的密码是错误的(比如他们一直都有“用户名或密码错误”)--这样的话,有效用户名的线索就更少了。

尝试实现屏幕名称与登录-这样,更少的用户会在用户列表上显示他们的登录名。

票数 1
EN

Software Engineering用户

发布于 2013-05-13 15:51:03

  • 永远不要使用MD5或SHA1散列算法。总是坚持像SHA512这样的新的
  • 总是使用强随机生成的盐。
  • 千万不要给你的用户发电子邮件--他们的密码,即使是“忘记密码”。
  • 永远不要使用mysql_*函数。它们长期被贬值。坚持PDO
  • 不要将密码存储在会话或cookie中。
票数 1
EN

Software Engineering用户

发布于 2011-05-02 16:19:33

这里有一个建议:确保您的cookie不能被JS访问以防止盗窃,参见Jeff的HttpOnly :保护你的厨师文章

...Through聪明的构造,畸形的网址只是设法通过消毒液。当在浏览器中查看最后呈现的代码时,将从该远程服务器加载和执行脚本。...whoever加载了这个脚本注入的用户配置文件页面,无意中将他们的浏览器cookie传输到了一个邪恶的远程服务器!正如我们已经建立的那样,一旦有人为一个给定的网站拥有了你的浏览器cookie,他们基本上就拥有了你在那里的身份的王国钥匙……

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/73024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档