Fab*_*ook 22 php passwords salt
可能重复:
PHP密码的安全散列和盐
警告不要将MD5用于密码,请使用像bcrypt这样的替代方法
对于我的密码,我应该使用这样的盐(盐对每个用户都是唯一的,而不是直接用密码存储)...
$salt = sha1(md5("coders gonna code"));
$password = md5($salt.$password);
Run Code Online (Sandbox Code Playgroud)
或者如果我刚才使用它会没关系:
$password = md5($password);
Run Code Online (Sandbox Code Playgroud)
因为如果我使用盐,即使用户填写密码这样的密码也不重要,因为盐(在这种情况下)将是145ac26ff093c6e1317f7d5fb4c9fd11c77be975
如此密码的条目将145ac26ff093c6e1317f7d5fb4c9fd11c77be975password
根据http://howsecureismypassword.net/
它需要3亿十亿年到破解....所以意见?或者我应该更糟糕的去吧
$password = md5($salt.$password.md5($salt));
Run Code Online (Sandbox Code Playgroud)
如果这个人已经走得足够远以获得盐哈希,那么任何东西都可以停下来再进一步吗?<更多声明此最后一个密码
对于那些说每个用户都应该这样做的人......我知道,这只是一个例子.
Jon*_*Jon 12
你完全错误地使用盐.盐应该是不可预测的; 你的盐与之完全相反(固定).由于固定哈希绝对没有任何好处,因此您似乎也指望攻击者不知道盐.这是通过默默无闻的安全定义,这是另一个不好的做法.
你应该做的是:
bcrypt
是最好的,因为它具有可配置的负载系数.Stu*_*tLC 12
您应该更改盐,使其特定于每个用户,而不是系统范围的常量.这将使彩虹表攻击您的密码哈希更加不方便.
特洛伊·亨特(Troy Hunt)在本文中对腌制的演变进行了很好的阐述.
编辑
$salt
每个密码记录都有一个独特的东西,它为它增加了很多熵.这通常是随机的字节序列,与用户帐户一起存储.
Hashing传统上是在salt
+ 的连接上完成的password
.
$passwordHash = hash($salt.$password);
Run Code Online (Sandbox Code Playgroud)
正如其他人所说,不要使用MD5进行散列.它被打破.
建议不要在散列之前将其他专有算法应用于密码或盐.相反,请看一个行业强度解决方案,如PBKDF2,除了腌制之外,还需要许多(通常> 10k)重复迭代,这将进一步减缓攻击者的速度.
如果采用OWASP指南,则应定期增加哈希数(以抵消摩尔定律).每个用户也应该保留哈希的数量,这意味着您需要存储哈希密码,盐和迭代次数的三倍.
不要使用MD5
哈希算法,使用更安全的东西,SHA256
甚至是bcrypt
.
肯定会对密码加密,如果有人确实进入了您的数据库,他们将无法撤消常见哈希的密码或使用彩虹攻击等技术.
http://michaelwright.me/php-password-storage
http://en.wikipedia.org/wiki/Bcrypt
归档时间: |
|
查看次数: |
1888 次 |
最近记录: |