【问题标题】:Prevent uploading .sh files to server uisng php [duplicate]防止使用php将.sh文件上传到服务器[重复]
【发布时间】:2017-02-25 23:25:05
【问题描述】:

目前在我的代码中,文件的扩展名在上传到服务器之前会被检查。在将文件上传到服务器之前,我还需要检查文件的内容。我使用了以下代码

$FileName = $_FILES[$imageInput]['name']; $finfo = finfo_open(FILEINFO_MIME_TYPE); $mtype = finfo_file($finfo, $FileName);

$mtype 可以正确识别所有图像类型,例如 .png 、 .jpg ,但它不能识别 .sh 文件。如何使用 php 进行检查?请有人帮忙。

【问题讨论】:

  • 你可以测试文件名是否以.sh结尾?

标签: php


【解决方案1】:

您可以通过.htaccess 阻止要执行的各种文件。例如你可以放置这个

<FilesMatch "\.(sh|cgi.+)$">
    ForceType text/plain
</FilesMatch>

这将确保文件夹中的文件将返回为 text/plain

如果您愿意,您可以在检测图像时检测 mime 类型。 .sh 的 MIME 类型是

application/x-sh
application/x-csh
text/x-shellscript

【讨论】:

    【解决方案2】:

    在这种情况下,您可以通过以下脚本获取扩展名来尝试在 mime 类型和扩展名之间进行交叉验证:

    $fileExtension= end(explode(".", $_FILES["uploadedFile"]["name"]));

    $fileName = ($_FILES['uploadedFile']['name']);

    $fileExtension = pathinfo($fileName , PATHINFO_EXTENSION);

    然后,应用类似的东西:

    $finfo = new finfo(FILEINFO_MIME_TYPE);
    if (false === $fileExtension = array_search(
        $finfo->file($_FILES['uploadedFile']['tmp_name']),
        array(
            //'sh' => 'text/x-shellscript', //not allowed
            'docx'  => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
            'rtf' => 'text/rtf',
            'odt' => 'application/vnd.oasis.opendocument.text',
            'txt' => 'text/plain',
            'pdf' => 'application/pdf',
        ),
        true
    )) {
         $error .= "<br> The allowed file format file are: \"doc\", \"docx\", \"rtf\", \"odt\", \"txt\", \"pdf\"' ";
    }
    

    我遇到了类似的问题,但在我的情况下,文件是 .rtf 类型。

    FILEINFO_MIME_TYPE 函数显然无法捕获任何类型的文件扩展名,这可能会导致一些验证错误。

    一些例子: .rtf 文件的默认 mime 类型是 application/rtf,但 FILEINFO_MIME_TYPE 函数显示 text/rtf

    正如我在here 描述的那样,我浪费了很多时间来解决这个错误:

    对于.sh 文件,我注意到FILEINFO_MIME_TYPE 函数无法捕获扩展名,它返回一个空值

    【讨论】:

      猜你喜欢
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 2021-02-03
      • 2011-03-31
      • 2021-05-02
      • 1970-01-01
      相关资源
      最近更新 更多