WordPress的联系表格7检查文件服务器端

时间:2018-07-13 15:38:20

标签: wordpress file attachment contact-form-7

这是我的问题:

在由Contact Form 7制作的表单中,我允许下载pdf,jpg或jpeg文件类型。 我担心的是扩展控制未完全执行。

实际上,如果我将“ test.exe”文件命名为“ text.jpg”,则可以提交表单,并且没有错误...

是否有解决方案可以测试? (例如通过哑剧测试)

如果是的话,我应该在哪里实现代码?

在此先感谢您的回答,对不起我的英语(我是法语...)

3 个答案:

答案 0 :(得分:0)

我在您的论坛中为您找到了一些有用的答案: PHP Uploading files - image only checking

尝试这个答案:

<?php
  function isImage($img){
      return (bool)getimagesize($img);
  }
?>

由杰里米·哈里斯(Jeremy Harris)发布。

这是getimagesize()的手册 http://php.net/manual/pl/function.getimagesize.php

答案 1 :(得分:0)

Wordpress使用过滤器upload_mimes控制站点范围内允许使用的MIME类型。您可以通过在wp-includes / functions.php中添加以下内容来自定义此列表:

function safe_mime_types($mime_types){
    unset($mime_types['exe']);  //remove .exe support
    return $mime_types;
}
add_filter('upload_mimes', 'safe_mime_types', 1, 1);

您还可以添加可接受的MIME类型:

function safe_mime_types($mime_types){
    $mime_types['svg'] = 'image/svg+xml';  //add .svg support
    unset($mime_types['exe']);
    return $mime_types;
}
add_filter('upload_mimes', 'safe_mime_types', 1, 1);

答案 2 :(得分:0)

对于那些有相同问题的人,这里是我的解决方案:

wp-includes/functions.php中:

add_filter('wpcf7_validate_file*', 'cf7_custom_file_validation', 10, 2);
add_filter('wpcf7_validate_file', 'cf7_custom_file_validation', 10, 2);

function cf7_custom_file_validation ($result, $tag) {
    if ($tag->name === 'file-586') {
        $contentType = mime_content_type($_FILES[$tag->name]['tmp_name']);

        if ($contentType !== 'image/png' && $contentType !== 'image/jpeg' && $contentType !== 'application/pdf') {
            $result->invalidate($tag, 'Ce type de fichier n\'est pas supporté');
        }
    }

    return $result;
}