在 DRUPAL 中验证 PDF 文件上传中的 MIME 类型

Posted

技术标签:

【中文标题】在 DRUPAL 中验证 PDF 文件上传中的 MIME 类型【英文标题】:Verify MIME type in PDF file upload in DRUPAL 【发布时间】:2016-12-28 17:45:58 【问题描述】:

drupal文件上传中如何验证pdf文件的mime类型。

问题:任何人都可以通过重命名或添加文件扩展名来上传脚本文件(例如:script.php.pdf)

我已经实现了图像上传的 mime 类型检查(因为它是一个单独的模块),但无法确定在哪里验证 pdf 文件的 mime 类型。

图像 MIME 类型检查代码:

$supported_mime =  array('image/jpg', 'image/jpeg', 'image/png', 'image/gif');
$elements[$delta]['#upload_validators']['file_validate_mime_type'][0] = implode('::', $supported_mime);

【问题讨论】:

【参考方案1】:

额外验证的代码应该放在你的 hook_file_validate() 函数中:

https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_file_validate/7.x

然而,仅仅重命名文件(隐藏真实扩展名)似乎不太可能达到欺骗 Drupal 的目的。我的意思是即使 php 如果上传了 php 文件,扩展名为 .pdf 也不会被执行。

【讨论】:

以上是关于在 DRUPAL 中验证 PDF 文件上传中的 MIME 类型的主要内容,如果未能解决你的问题,请参考以下文章

Drupal 7令牌和img标签

Drupal创建自定义表单,上传文件代码

为什么fpdi输出不能在Drupal 7中工作,而是在D7之外工作

如何在上传Drupal 8后获取文件名?

数数以 Javascript 上传时 PDF 文件中的页面数

Drupal 中的 CSRF 验证失败