0

如果您将(file.php)重命名为(file.jpg)并且您想上传它

drupal 6 image_field 模块可以检测到它并拒绝上传此文件,但 drupal 7 中的 image_field 无法检测到它。

你能帮我在drupal 7中找到另一个可以检测的模块吗(REAL文件类型)。

谢谢你

4

2 回答 2

0

你是对的,Drupal 7 没有 mime 类型验证

有人在此链接中对其进行了修补:http: //drupal.org/node/959800

于 2013-04-24T15:01:06.097 回答
0

一家网站安全审计公司为我的一个 Drupal 项目提出了同样的问题。我的场景,如果我将 .exe 文件更改为 .jpg 然后尝试通过表单上传,它是为我上传的。

我在 web 和 drupal 社区上进行了搜索,但没有得到任何合适的答案。最后,我在核心“include/file.inc”文件中进行了编辑,并定义了支持的 mime 类型为“'image/jpg'、'image/jpeg'、'image/png'、'image/gif'”。

但不建议更改 Drupal 核心文件。这是完整的代码:

“include/file.inc”文件中函数 file_validate_mime_type 的变化

 $errors = array();
 $allowedmimetype = explode('::', $mime_types);
 $finfo = new finfo(FILEINFO_MIME_TYPE);
 $tmpmime =$finfo->file($file->uri);
 if (!in_array($tmpmime, $allowedmimetype) )
 {
    $errors[] = t('Not allowed this mime type '.$tmpmime.'! Only files with the  following mime type are allowed: %files-allowed.', array('%files-allowed' => $mime_types));
 }
 return $errors;
}

在文件“modules/image/image_field.inc”中添加了以下 2 行


    $elements[$delta]['#upload_validators']['file_validate_mime_type'][0] = implode('::', $supported_mime);

在以下行之前

$elements[$delta]['#process'][] = 'image_field_widget_process';

网络安全审计团队通过了此代码。可能在未来我们会得到一些更好的答案。

于 2015-08-08T07:08:38.153 回答