[英]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.