我正在一个LAMP(erl)堆栈上开发,并且知道几种存储模糊密码的方法。我想听听那些认为自己有最佳实践的人的意见,比如MySQL 4.1.1和Perl5.8,以及为什么它是最佳实践的原因。
我读到过一种选择,使用MySQL ENCODE()和DECODE()函数,听起来很不错……你的想法是什么?
发布于 2008-11-25 16:30:58
我认为使用像SHA-256这样的适当散列函数的加盐散列是最好的。可逆的密码不如不能反转的密码安全。如果没有外部Perl模块,您可以使用内置的SHA1()函数,它不如SHA256好,但比ENCODE/DECODE好。
此外,您还必须考虑从代码到数据库的路径,这是可以嗅探到的。您可以通过散列代码或加密数据库连接来避免这种风险。最好在代码中完成,因为即使在加密连接时,仍然存在配置查询日志从而将明文存储在某个日志文件中的风险。
发布于 2008-11-25 16:30:26
通常,我更喜欢将密码保存为无法恢复的散列,而不是可以解密的加密项。
通过从访问者提供的字符串(当然还有一些盐)计算哈希,我可以判断用户是否提供了两次相同的密码,而不存在允许我的应用程序解密提供的密码的安全风险,这可能是恶意的。
我的感觉是,当您希望数据可恢复时,encode()和decode()可能是很好的解决方案,但是对于存储的密码,不可恢复的散列(使用Crypt::MD5)是更好的方法。
发布于 2008-11-25 16:29:52
如果您只需要密码来验证自己/用户,则单向存储(如md5)更好。
https://stackoverflow.com/questions/317967
复制相似问题