如何阻止除.exe之外的每个文件类型

时间:2010-11-20 14:44:23

标签: php

这就是我的全部。

<?php
if ((($_FILES["file"]["type"] == "file/exe")
&& ($_FILES["file"]["size"] < 20000000))
{

我只需要上传.exe文件类型,我该怎么做? reg ex?(PHP)

5 个答案:

答案 0 :(得分:1)

我认为您应该使用类似finfo_file的内容。据我所知,上传者可以欺骗$_FILES["file"]["type"]任何他想要的东西。

答案 1 :(得分:1)

没有可靠的方法可以做到这一点,因为客户端发送的所有信息都可能被篡改。

我只需检查文件扩展名,如:

if (strncasecmp(substr($_FILES["file"]["name"], -4), '.exe') === 0) {
    // is .exe
}

此外,您可以查找特定的magic numbers

如果您要传送该文件,请确保使用正确的MIME媒体类型(例如application/octet-stream)。

答案 2 :(得分:0)

此外,您还可以检查每个文件的MIME类型.exe可执行文件的应用程序类型始终为mime

pplication / octet-stream,application / x-msdownload,application / exe,application / x-exe,application / dos-exe,vms / exe,application / x-winexe,application / msdos-windows,application / x -msdos程序

答案 3 :(得分:0)

如果您使用RegExp或pathinfo,在这种情况下我认为更直接,您只检查文件名而不是文件类型。

检查this answer以了解如何获取mime类型(fileinfo或mime_content_type)

答案 4 :(得分:-1)

$_FILES["uploaded_files"]["type"][$i] != "application/octet-stream"