当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《ENCODE()和DECODE()是处理MySQL中应用程序密码字段的"最佳"方式吗?》经验,为你挑选了3个好方法。

我正在开发一个LAMP(erl)堆栈,并知道几种存储模糊密码的方法.鉴于MySQL 4.1.1和Perl 5.8,我想听听那些认为他们有最佳实践的人,以及为什么它是最好的原因.

我读过的一个选项,使用MySQL ENCODE()和DECODE()函数,对我来说听起来不错......你的想法?



1> Tim Howland..:

通常,我更喜欢将密码保留为无法恢复的哈希值,而不是可以解密的加密项.

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

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



2> Vinko Vrsalo..:

我认为使用SHA-256这样的哈希函数的salted哈希是最好的.可逆的密码不如那些无法逆转的密码安全.如果没有外部Perl模块,您可以使用内置的SHA1()函数,不如SHA256,但优于ENCODE/DECODE.

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



3> Burkhard..:

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

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有