在我的项目中,用户可以上传任何类型的文件。我需要确保执行上传的文件,可以解析php(* .php,*。html等)的安全防止执行上传的php文件?
有没有办法告诉Apache不要用PHP解析任何文件在web/uploads和只需将它们显示为纯文本?什么是其他选项?
在我的项目中,用户可以上传任何类型的文件。我需要确保执行上传的文件,可以解析php(* .php,*。html等)的安全防止执行上传的php文件?
有没有办法告诉Apache不要用PHP解析任何文件在web/uploads和只需将它们显示为纯文本?什么是其他选项?
让他们所有的同一个文件夹下,并设置该线在该目录中的文件.htaccess
:
php_flag engine off
这也将照顾其他漏洞,如.gif文件中嵌入PHP代码。
这工作。但是,如果该文件是* .php,则浏览器尝试下载文件。在这种情况下,我怎样才能得到“Content-Type \t text/plain”标题? – Dziamid 2011-05-04 15:28:37
@Dziamid:我自己并没有尝试过,但我相信'AddType text/plain .php'应该可以做到。 – Kaivosukeltaja 2011-05-04 18:36:19
为什么不直接将文件扩展名重命名为.phps
?
为了澄清PHPS是一个PHP文件的源代码视图:
澄清:
file.php
=>file.phps
快速谷歌例如:
你想在Apache SetHandler指令:http://httpd.apache.org/docs/current/mod/core.html#sethandler
这可以强制目录中的所有文件,通过一定的处理程序进行处理。所以沿线的东西:
<Location /web/uploads>
SetHandler None
</Location>
应该做你想做的。
如果你想让它们只显示为纯文本文件,为什么不在上传时将它们重命名为filename.txt?或者,如果你正在寻找'保留原来的扩展名,filename.php.txt。这将不会被执行,将被视为一个文本文件。 – 2011-05-04 15:13:50
如果客户想下载文件并在他的机器上执行文件,这会增加客户端的一些开销。如果您隐藏了扩展名,只需在Windows上对其进行成像即可。 =) – Dziamid 2011-05-04 15:32:21