免责声明 :该答案写于2008年。
从那时起,PHP就给了我们
password_hash,
password_verify并且自介绍以来,它们是推荐的密码哈希和检查方法。
答案的理论仍然是一个很好的阅读。
TL; DR
不要
- 不要限制用户可以输入哪些字符作为密码。只有白痴这样做。
- 不要限制密码的长度。如果您的用户想要一个句子,其中包含supercalifragilisticexpialidocious,请不要阻止他们使用它。
- 不要在密码中剥离或转义HTML和特殊字符。
- 切勿以纯文本形式存储用户密码。
- 除非 用户忘记了密码, 否则 不要通过电子邮件将密码发送给您的用户 ,而是您发送了一个临时 密码 。
- 永远不要以任何方式记录密码。
- 切勿使用SHA1或MD5甚至SHA256 哈希密码!现代饼干可以分别超过60和1800亿个哈希/秒。
- 请勿将[bcrypt与hash()的_原始_输出混合使用,请使用十六进制输出或base64_enpre对其进行编码。(这适用于其中可能有恶意的任何输入


