我打算写一个安全的登录脚本,我想问一下它应该有什么样的组件。
现在这就是我想到的事情
基本
注册
登录
登录后
还有其他重要的安全提示我应该考虑一下吗?
感谢。
答案 0 :(得分:11)
这实际上是一个非常重要的问题,需要考虑许多问题。幸运的是,很多问题已经解决了。
password_hash()
和password_verify()
- 不要使用像MD5或SHA1这样的快速哈希值,也不要使用自己的哈希值哈希策略或者你会发现自己重新发明PBKDF2 - password_hash()
做你想做的一切,而不必强调实现细节。它们足够了;好好学习这些工具。如果您使用PHP< 5.5使用password_compat 会话管理:使用内置会话,在没有混合内容的地方使用HTTPS,将"httponly"
和"secure"
设置为true
。在权限升级时重新生成会话(例如,用户登录)。
如果你想成为偏执狂,你可以通过设置一个session fixation attacks会话变量来防御canary(这些天真的没有用)。在页面加载时,如果未定义$_SESSION['canary']
(或与预期值不匹配),则销毁会话并将用户视为新访客。
htmlentities($input, ENT_QUOTES | ENT_HTML5, 'UTF-8')
非常好。这是我希望通过Paragon Initiative Enterprises blog上的一系列非常详尽的博客文章回答的主题。