这是我的问题:根据您的经验,为执行散列的PHP文件中存储的每个哈希都使用单个盐是否更安全,或者为每个哈希对象使用不同的盐并将其存储在数据库中更好那个对象?
答案 0 :(得分:4)
只有在每个散列字符串不同时,盐才有意义。
所以,是的,创建额外的列并将随机盐放在那里
答案 1 :(得分:0)
每个哈希的不同盐;否则散列物体容易受到强力攻击。
答案 2 :(得分:0)
如果您要将密码存储在数据库中,则需要混合使用每个条目不同的内容,这样您就无法在数据库中轻松找到匹配的密码。您可以使用随机盐,或者您可以只包含用户名(如果它是不可变的)或其他一些不可变的唯一字段。
如果你使用像用户名这样的东西,那么你也应该做一些你的实现独有的东西,因为可能有其他网站使用相同的算法,因此有机会发现匹配。严格来说,它不必是你在哈希中包含的盐,它可能只是你的算法工作方式的差异,但通常最简单的方法就是添加全局盐。如果您使用的是每个盐,那么就不需要添加另一个全球盐。
有了这些问题,通常最容易想到黑客可能会使用的各种攻击。请记住,您实际上并没有尝试保护自己的数据(因为您的数据库已遭到入侵),您实际上是在试图阻止黑客获取您网站上使用的凭据并在其他网站上使用这些凭据。
答案 3 :(得分:-6)
存储在数据库中的盐唯一能防御彩虹表
除非是开源软件,否则在PHP文件中使用单一盐会更安全。
许多开发人员都不同意我的意见,但对于黑客来说,这是一个不费吹灰之力
如果salt存储在PHP文件中,那么黑客必须获取文件访问权以查看salt并且它仍然可以防御彩虹表...
在大多数情况下(如果你不相信我订阅数据包风暴安全性)漏洞是通过SQL注入/ XSS(跨站点脚本),来自Anonymous等对Wordpress的大攻击......所有SQL注入。并且很少有漏洞允许攻击者使用RFI(远程文件包含)或类似内容来查看源代码。
考虑一下,如果有人通过SQL注入看到你的数据库等......他们有数据库访问权限,所以他们也会有你的盐,所以如果它是随机的,那就无所谓了。