跳转到主要内容
木棉 提交于 19 June 2013

原文链接:https://drupal.org/node/845876

  Drupal5和Drupal6内核出于很多原因使用md5().然而冲突或是攻击这个hash函数仍旧是不可能的,当为Drupal5或6写模块,使用sha1()比使用md5()更好。 任何时间你需要认证字符或文件内容比较一个密钥字符串,你应该避免使用一个单一的hash函数容易受到字符串扩展攻击.最优的方法是计算一个基于hash的认证代码使用hash函数或是依赖于PHP5 hash扩展.一个可接受的选择是使用hash两次。 一个使用PHP的hash库:
$hmac = hash_hmac('sha256', $data, $secret_key);
一个使用Drupal 7的hmac的函数:
$hmac = drupal_hmac_base64($data, $secret_key);
一个使用双hash的例子:
$hash = sha1(sha1($secret_key . $data));
对于Drupal7模块,md5()和sha1()应该从未使用,因为它们是被认为的过时的潜在不安全的一些应用程序。因为通常hash函数265回调hash。Drupal7也有封装好的方法,在URLs中使用base-64编码的hash,见: http://api.drupal.org/api/function/drupal_hash_base64/7 http://api.drupal.org/api/function/drupal_hmac_base64/7 对于所有的drupal7的改变见: http://drupal.org/node/723802