我有一个上传文件夹,用户可以上传任何内容,允许所有文件类型......
但是,有一个问题......
如果用户上传.php文件,该文件将不会被提供下载,它将被执行,因此如果用户上传危险的php文件,即删除文件夹,或浏览或显示安全数据,它将会执行那么,任何人都可以访问服务器...
如何保护该文件夹中的执行?
我尝试使用CHMOD 755获取该文件夹,但无法上传文件......
有没有办法保护这个没有PHP脚本或文件类型检查上传或其他东西,只是为了阻止在该特定文件夹中执行...
也许用.htaccess或其他什么?
谢谢...
答案 0 :(得分:4)
将目录放在public www-scope之外,并使用脚本使用file_get_contents或类似文件获取文件。
答案 1 :(得分:3)
我的第一个倾向是说“不要那样做!”。
但是如果必须出于某种原因这样做:将文件上传到Apache无法访问的目录中。然后编写一个读取文件并输出其内容的脚本。
恕我直言,这仍然是一个坏主意。这并不妨碍某人使用Javascript向其他用户做各种令人讨厌的事情。
修改强> 根据你的评论,我在答案中添加了一些内容:
你必须记住,在网络上有多层“执行”,实际上它被解释了,但我不会争论语义。如果Apache为您的文件服务并且它被设计为由Apache解释,那么Apache将对其进行解释(通常是脚本语言,如PHP)。如果您下载了一个旨在由浏览器解释的文件(HTML,Javascript,CSS),它将由浏览器和所有与之相关的程序进行解释。
如果您无法使用脚本来读取文件(这只会阻止Apache对其执行某些操作),您可以让您的上传程序ZIP文件。这样,它总是以正确的格式下载。
答案 2 :(得分:2)
将它放在文件夹的.htaccess中以禁用PHP:
php_flag engine off
如果您使用的是FastCGI mod_php
:
RemoveHandler .php
答案 3 :(得分:0)
为什么不过滤php文件?你真的需要你的用户上传php文件吗?你可以过滤已知的dangerouns扩展。