繁体   English   中英

如何保护正在执行的上传文件夹中的文件

[英]How to protect files in upload folder being executed

我有一个上传文件夹,用户可以上传任何内容,允许所有文件类型...

但有个问题...

如果用户上传.php文件,该文件将不会被提供下载,它将被执行,因此如果用户上传危险的php文件,删除文件夹,浏览或显示安全数据,它就会这样做,所以任何人都可以访问服务器...

如何保护该文件夹中的执行?

我尝试使用CHMOD 755获取该文件夹,但无法上传文件...

有没有办法保护这个没有PHP脚本或文件类型检查上传或其他东西,只是为了阻止在该特定文件夹中执行...

也许用.htaccess或其他什么?

谢谢...

将目录放在公共www-scope之外,并使用脚本使用file_get_contents或类似方法获取文件。

我的第一个倾向是说“不要那样做!”。

但是如果你出于某种原因必须这样做:将文件上传到Apache无法访问的目录中。 然后编写一个读取文件并输出其内容的脚本。

恕我直言,这仍然是一个坏主意。 这并不妨碍某人使用Javascript向其他用户做各种令人讨厌的事情。

编辑根据您的评论,我在答案中添加了一些内容:

你必须要记住,在网络上有多层“执行”,实际上它是被解释的,但我不会争论语义。 如果Apache服务于您的文件并且它被设计为由Apache解释,那么Apache将解释它(通常是脚本语言,如PHP)。 如果您下载了一个旨在由浏览器解释的文件(HTML,Javascript,CSS),它将被浏览器和所有与之相关的程序解释。

如果你不能使用脚本来读取文件(这只会阻止Apache对它做一些事情),你可以让你的上传程序压缩文件。 这样,它总是以正确的格式下载。

把它放在文件夹的.htaccess中以禁用PHP:

php_flag engine off

如果你正在使用FastCGI或不使用mod_php

RemoveHandler .php

为什么不过滤php文件? 你真的需要你的用户上传php文件吗? 你可以过滤已知的dangerouns扩展。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM