【问题标题】:drupal 7 image field doesn't check image typedrupal 7图像字段不检查图像类型
【发布时间】:2013-04-24 14:31:16
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: php drupal-7 drupal-6 drupal-modules image-uploading


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      一家网站安全审计公司为我的一个 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”文件中添加了以下两行

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

      在下一行之前

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-02
        • 1970-01-01
        • 1970-01-01
        • 2013-03-22
        • 1970-01-01
        • 1970-01-01
        • 2015-01-05
        • 1970-01-01
        相关资源
        最近更新 更多