Bas*_*sic 2 php mysql security
以下是盐密码的好方法吗?
hash('sha256', $_POST['password'], $_POST['email'])
Run Code Online (Sandbox Code Playgroud)
我使用用户电子邮件作为盐.有些人不使用电子邮件,有些人则说使用随机数.
即使我使用随机数,我仍然需要将它存储在我的MySQL表中,所以无论如何盐仍然是已知的,并且使用电子邮件的额外好处是彩虹表的可能性大大降低,即使我是使用16位整数?
盐背后的想法是防止黑客使用彩虹表.例如,如果黑客能够破坏您的数据库并找出散列密码是什么,他就不能轻易地对散列进行反向工程以找到会生成相同散列的值.
但是,存在称为彩虹表的已经散列的单词表.有些人已经经历了计算字典中每个单词的散列和其他常用密码的麻烦.如果黑客拥有其中一个表,加上数据库中的哈希密码,则可以很容易地找出密码是什么.
但是,salt会改变所有这一切,因为现在,您不是对密码进行哈希处理,而是对密码加上一些随机值进行哈希处理,这意味着彩虹表现在没用了.黑客是否可以妥协盐并不重要.
用明文保存盐是完全没问题的.你想要在所有用户之间使用一些不统一的东西,因为这又失败了.我个人喜欢使用帐户创建的时间戳.
那有意义吗?