我希望用户能够在我的网站上选择"记住我"框,这样他们每次来都不需要登录.因此,我需要在cookie中存储唯一ID以识别它们.用sha512和PHP中的长盐散列密码并将其存储在cookie中是否安全?如果cookie被盗,他们的密码会有风险吗?显然它必须以某种方式连接到他们的密码,否则如果cookie值被猜测或被盗,用户将无法阻止其他人登录.
另外,建议使用GUID作为唯一标识符吗?
谢谢,本
我听说盐的唯一目的是防止彩虹表攻击,但肯定它必须比这更有价值?它不会阻止基于字典的攻击吗?那么暴力强迫,盐会在那里有用吗?你能解释一下原因吗?
其次,假设我有一个算法,它采用了微量的时间,一个128字符的盐和一个介于10亿到100亿之间的随机数,并将它们混合在一起.这会提供很高的安全性吗?因为即使攻击者知道其中一个细节,在我看来计算其余部分仍然在计算上是不可行的.那是对的吗?
谢谢,
本
编辑:为了澄清,攻击者无法访问哈希算法,因此他们不能向系统发送任何信息.它们只有散列,它们必须弄清楚它是如何编译的.当然,即使他们知道哈希是如何产生的,试图用长盐来强制所有组合也会让它变得不切实际?
此外,哈希不是用户的密码或用户名,它只是用于身份验证的随机字符集.因此,不需要存储salt和随机数,只需要存储结果.在这种情况下,上面的系统,如下面的代码所示,是一个很好的系统,以防止攻击者能够真实地猜测用户的哈希可能是什么?
$salt = "some random characters I made up";
hash('sha256', microtime(true).$salt.mt_rand(1000,9999));
Run Code Online (Sandbox Code Playgroud)
我知道只有1000-9999而不是上面提到的数十亿.
再次感谢.