Apache:阻止打开具有非PDF扩展名的PDF文件

Apache:阻止打开具有非PDF扩展名的PDF文件,apache,xampp,Apache,Xampp,我对设置服务器非常陌生,因此我有一个与XAMP/Apache 2相关的问题: 当我将PDF文件的扩展名重命名为.txt时,所有浏览器都会以纯文本形式打开PDF文件(我理解这一点,这很好) 但是: 当我将pdf扩展名重命名为.jpggggg时,它仍然以pdf格式打开 为什么 因为我担心有人上传了一个有效的PDF文件,里面有一个隐藏的exe文件,并欺骗我对其进行双重加密(这会在我的服务器或ruis上安装病毒/后门/任何其他东西) 那么in如何才能成功过滤出这样的“带有.exe/.app的PDF文件”

我对设置服务器非常陌生,因此我有一个与XAMP/Apache 2相关的问题:

当我将PDF文件的扩展名重命名为.txt时,所有浏览器都会以纯文本形式打开PDF文件(我理解这一点,这很好)

但是:

当我将pdf扩展名重命名为.jpggggg时,它仍然以pdf格式打开

为什么

因为我担心有人上传了一个有效的PDF文件,里面有一个隐藏的exe文件,并欺骗我对其进行双重加密(这会在我的服务器或ruis上安装病毒/后门/任何其他东西)

那么in如何才能成功过滤出这样的“带有.exe/.app的PDF文件”?

为您提供的信息:

-->Apache版本是2.4 -->默认Mime类型设置为纯文本

-->我已经从加载中停用了mime\u magic模块(通过以开头的行(#LoadModule mime\u magic\u Module modules/mod\u mime\u magic.so))

-->我还停用了另一行,其中包含MIMEMagic(#MIMEMagicFile“conf/magic”)

(不幸的是,除了关闭MimeMagic模块,我没有别的想法!)

我还能做什么

所以我的问题是:

1。为什么所有浏览器(Chrome,IE 8,Firefox)都将文件作为PDF处理,尽管extion设置为“.jpggg”,我如何防止这种行为。

2。如何使用PHP筛选出包含EXE的有效PDF

提前感谢您的帮助


好的,考虑到你的强调是对我的评论的一种反应,你所要问的就是如何实现你在问题中所描述的目标。更多信息。据我所知,当然还有其他观点:

为了防止客户端系统在下载时“打开”下载的文件,您可以(而且无论如何应该)实现自己的下载处理程序。意思是:http服务器不会直接处理对文件的请求,而是直接传递在文件系统中找到的任何文件。相反,请求由一些脚本处理。该脚本可以做很多事情:检查文件的存在、下载权限、文件类型(真实或伪造),最重要的是,它可以向客户端发送您想要的任何信息。在本例中,这将是一个http内容类型头,声明后面是一个纯文本文件。浏览器(不是客户端系统)将接受这一点并进行相应的处理。您还可以强制浏览器保存有效负载文件,而不是尝试立即打开它

然而,这根本不能解决您所解决的问题。它突然变短了。因为最终文件在客户机系统上,当处理本地存储的文件时,该系统根据自己的逻辑进行操作。例如,如果文件是PDF文件,并且要求它打开它,那么它会这样做(MS Windows除外,这实际上取决于您如何发出打开它的命令)。您无法阻止这种情况,因为这是您无法控制的客户端逻辑。除了可能会破坏文件,这使得下载甚至处理文件的整个要点完全过时

因此,这种方法只是暗示了一种错误的“安全感”,而它并没有提供这种感觉。这样看:试图阻止打开这样一个PDF文件(里面有一个可执行文件)有什么意义?确保此场景真正安全的唯一方法是根本不拥有该文件。因为把文件表面上伪装成其他东西有什么意义?它没有那样的价值

相反,您应该考虑这个问题的真正解决方案:

  • 首先不接受携带这种嵌入式代码的PDF

  • 使用PDF解释器(查看程序),这些解释器不会愚蠢到实际运行不受信任的代码(我知道,全世界都声称需要Adobe/Acrobat Reader来打开PDF,这显然是a)完全胡说八道,b)可能是PDF解释器最糟糕的选择之一)

  • 在cient端使用比MS Windows更安全的操作系统。“exe”样式的可执行文件仅限于MS Windows世界。没有其他操作系统可以使用它们(无论如何也不能直接使用)。因此,将这些东西嵌入到像PDF这样的包装格式中,无论如何在一个体面的企业中都是毫无意义的。这是太有限和短视了。我知道,大多数人确实使用微软视窗,特别是在某些商业领域。但是,你不能让他们选择一个不安全的环境变得更加安全

总而言之:你尝试引入一个安全步骤,它不提供任何真正的安全性,只是在表面上诱使你产生某种安全感。不要那样做,那样会适得其反。要么通过屏蔽这些内容来解决问题,要么依靠人们知道他们想要什么,知道他们在做什么。不要试图智胜所有人。你不能


就我的两分钱…

实际上你称之为“好”,文件名中的“三个字符的点扩展名”决定了在MS Windows系统下如何打开文件,这是80年代的遗物,不再有意义了。现代系统的行为有所不同:因为文件仍然包含pdf,即使您重命名它,它仍然作为pdf文件打开,这显然是有意义的。事实上微软的Windows在这方面是不一致的:有些部分实现了过时的,有些实现了现代的行为。@arkascha:好的,我明白了。但我怎样才能防止这种情况。(出于安全原因:我不想最后打开一个扩展名为“良好”的文件,后来它变成了一个PDF文件(因为PDF文件可以包含exe文件,并且可以自动启动这些“内部/隐藏”exe文件),谢谢你的回答。但我似乎没有清楚地解释我的问题(非nativ扬声器,对不起)1.我的问题是:我不怕