我确信所有这些都有一些基本因素可以简化我所缺少的整个概念,但这里有:
好的,你加盐和放用于安全性的哈希密码,但这样做的代码呢?
如果您在主机或vps上,不能“某人”获得您的源b / c,您在那里编译它?或者,如果他们可以访问您的数据库,他们是否无法访问执行加密/解密的程序并强制执行它直到他们获得算法?
我知道没有什么可以100%安全,但在这种情况下如何改善安全性呢?
答案 0 :(得分:2)
在您的数据遭到入侵的情况下,Salting将保护数据免受字典或彩虹表攻击。蛮力并非不可能,但速度很慢,需要再次为每个密码哈希执行。如果没有进行腌制,蛮力攻击就会变得更容易实现。
与某些人说的相反,salt没有以任何特殊方式受到保护(也不需要),但是以纯文本形式存在,附加到散列中。然而,它确实,对于每个哈希都需要是唯一的,否则它对于这种使用变得毫无意义。这与用于所有哈希的胡椒相反,必须受到保护。由于这种区别,通常首选腌制,除非保证限制进入胡椒(不是一件容易的事)。
如果您想提高安全性,请不要使用共享主机。并且不允许直接访问数据库。并且不允许任何未经预先筛选的人访问您的系统。从实际意义上讲,这些并不总是可行的选择。所以,只需使用盐并与之共存:)
答案 1 :(得分:1)
源代码中没有关于哈希算法的“隐藏”。实际上,您应该使用经过验证的,众所周知的强哈希实现,而不是自己实现算法。
盐是需要保护的部分。那个盐不是你的代码的一部分(或者不应该是),而应该存储在某种文件存储/数据库中(取决于你的应用程序),并且应该在每个用户的基础上应用(用户Joe应该有密码不同于用户Fred的。)
可以肯定的是,保护每个用户密码使用的盐至关重要。这就是适当的文件系统/数据库权限发挥作用的地方。
另一方面,你的代码也应该受到保护,不受任何未经授权的用户的侵害,但不能保护盐(至少不是直接......如果有人可以访问盐)或者只是用自己的代码替换代码,完全绕过身份验证检查。)