default.settings.php中的说明说
安装程序将将此变量设置为随机值。如果值被更改,所有一次性登录链接都将失效。注意,如果您的站点部署在web服务器集群上,则必须确保此变量在每个服务器上具有相同的值。如果此变量为空,则序列化的数据库凭据的散列将用作回退盐。
但是盐渍的这种解释说
每次用户创建帐户或更改密码时,都必须生成一个新的随机盐。
并进一步阐明,每个盐度散列(例如密码)都应该与数据库中的hashed+salted密码一起存储其唯一的盐分。
我是误解了我读到的关于盐渍的文章,还是Drupal为了方便而使用错误的实践,或者文章是错的,还是有其他的事情发生?
发布于 2014-11-23 15:17:10
我已经迁移了其他CMS到Drupal,并有移动用户帐户的经验。Drupal的密码算法非常好。
您在settings.php中所指的salt不用于密码。drupal_hash_salt盐用于生成像cookie这样的东西。因此,如果您处于负载平衡设置中,为什么它要求您必须在所有web服务器上保持相同。
密码的生成使用SHA512算法,使用openssl库随机生成盐类(不是mt_rand或其他弱随机数生成器)。
如果您想了解有关密码生成的更多信息,可以从这里开始阅读Drupal的API文档
您可以看到,在要生成的函数中,它调用一个“私有”函数来生成一个新的密码盐(_password_generate_salt())。这反过来又调用了许多其他私有的、自定义的Drupal函数(这是一个很长的漏洞)。
因此,通常用于Drupal的密码方案是非常深入和嵌套的,它不使用被认为是“弱”的PHP函数。
https://drupal.stackexchange.com/questions/137721
复制相似问题