首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ENCODE()和DECODE()是处理MySQL中应用程序密码字段的“最佳”方法吗?

ENCODE()和DECODE()是处理MySQL中应用程序密码字段的“最佳”方法吗?
EN

Stack Overflow用户
提问于 2008-11-25 16:26:03
回答 7查看 3.4K关注 0票数 1

我正在一个LAMP(erl)堆栈上开发,并且知道几种存储模糊密码的方法。我想听听那些认为自己有最佳实践的人的意见,比如MySQL 4.1.1和Perl5.8,以及为什么它是最佳实践的原因。

我读到过一种选择,使用MySQL ENCODE()和DECODE()函数,听起来很不错……你的想法是什么?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2008-11-25 16:30:58

我认为使用像SHA-256这样的适当散列函数的加盐散列是最好的。可逆的密码不如不能反转的密码安全。如果没有外部Perl模块,您可以使用内置的SHA1()函数,它不如SHA256好,但比ENCODE/DECODE好。

此外,您还必须考虑从代码到数据库的路径,这是可以嗅探到的。您可以通过散列代码或加密数据库连接来避免这种风险。最好在代码中完成,因为即使在加密连接时,仍然存在配置查询日志从而将明文存储在某个日志文件中的风险。

票数 6
EN

Stack Overflow用户

发布于 2008-11-25 16:30:26

通常,我更喜欢将密码保存为无法恢复的散列,而不是可以解密的加密项。

通过从访问者提供的字符串(当然还有一些盐)计算哈希,我可以判断用户是否提供了两次相同的密码,而不存在允许我的应用程序解密提供的密码的安全风险,这可能是恶意的。

我的感觉是,当您希望数据可恢复时,encode()和decode()可能是很好的解决方案,但是对于存储的密码,不可恢复的散列(使用Crypt::MD5)是更好的方法。

票数 8
EN

Stack Overflow用户

发布于 2008-11-25 16:29:52

如果您只需要密码来验证自己/用户,则单向存储(如md5)更好。

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

https://stackoverflow.com/questions/317967

复制
相关文章

相似问题

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