我对设置服务器很新,所以我有一个与XAMP / Apache 2相关的问题:
当我将PDF文件的扩展名重命名为 .txt 时,所有浏览器都会以纯文本格式打开PDF(我明白这是好的)。
但
当我将pdf-extension重命名为.jpggggg时,它仍会以PDF格式打开!
WHY ??
因为我担心有人上传了一个带有隐藏exe的有效PDF,并诱使我进行双重攻击(在我的服务器上安装病毒/后门/其他任何内容或者将其删除)。
那么怎样才能设法过滤这样的"带有.exe / .app的PDF文件"出吗
为您提供信息:
- > Apache VErsion是2.4 - >默认Mime-Type设置为纯文本!
- >我已经停止加载 mime_magic 模块(通过使用#开始行(#LoadModule mime_magic_module modules / mod_mime_magic.so))
- >我还用其中的MIMEMagic停用了另一行(#MIMEMagicFile" conf / magic")。
(遗憾的是,除了停用MimeMagic-Module之外别无其他想法!)
我还能做什么!
所以我的问题是:
1。为什么所有浏览器(Chrome,IE 8,Firefox)都以PDF格式处理文件,尽管设置了extion并且#34; .jpggggg"以及如何防止此行为。
2。我如何使用PHP来过滤掉有效的PDF文件
提前感谢您的帮助!
蒂
答案 0 :(得分:0)
好的,考虑到你的重点是对我的评论的反应,你要问的是你如何能够在这里提出更多信息,例如你在问题中描绘的内容。据我所知,尽管存在其他意见:
防止客户端系统打开"下载的下载文件你可以(并且应该)实现自己的下载处理程序。含义:文件的请求不由http服务器直接处理,直接提供文件系统中找到的任何文件。相反,请求由某些脚本处理。该脚本可以执行许多操作:检查文件是否存在,下载权限,文件类型(真实或伪造),最重要的是,它可以向客户端发送您想要的任何信息。在这种情况下,这将是一个http内容类型标头,声称以下是纯文本文件。浏览器(不是客户端系统)将接受并相应地进行处理。您还可以强制浏览器保存有效内容文件,而不是尝试立即打开它。
然而,这并没有解决你所解决的问题。它跳得很短。因为最终文件位于客户端系统上,并且该系统在处理本地存储的文件时根据其自己的逻辑运行。如果文件是例如PDF并且要求打开它,那么它将会这样做(除了MS-Windows,这实际上取决于如何你给命令打开它)。你不能阻止它,因为这是你无法控制的客户端逻辑。除了可能通过削弱文件,使整个下载点甚至处理文件都过时。
因此,这种方法只是表明了一种错误的安全感"它没有提供。以这种方式看待:试图阻止打开这样一个PDF文件(在里面放一个可执行文件)有什么意义?保持这种情况真正安全的唯一方法是根本没有文件。因为将文件伪装成其他东西的重点是什么?它没有那么重视。
相反,你应该考虑真正的解决方案来解决这个问题:
首先不接受携带此类嵌入式代码的PDF
使用PDF解释器(查看程序)并不是那么愚蠢的实际运行不受信任的代码(我知道,所有世界声称需要Adobe / Acrobat Reader来打开显然属于的PDF)完全无稽之谈b)可能是PDF解释器中最糟糕的选择之一)
在客户端使用比MS-Windows更安全的操作系统。 " EXE"样式可执行文件仅限于MS-Windows世界。没有其他操作系统可以使用它们(不是直接)。因此,将这些内容嵌入到像PDF这样的包装器格式中,无论如何都不会让人感觉受到尊重。这是太有限和短视。我知道,大多数人确实使用MS-Windows,特别是在某些业务领域。但你不能让他们选择一个不安全的环境神奇地更加安全。
为了解决问题:你试图引入一个不提供任何真正安全性的安全步骤,但只是在表面层面引诱某种安全感。不要这样做,这是有成效的。通过阻止此类内容或依靠人们了解他们想要的内容并了解他们正在做什么来解决问题。不要试图超越每个人。你不能。
只是我的两分钱......