如何防止通过浏览器“非法”下载php文件。有什么方法可以用来下载php文件?如何防止下载PHP文件?什么是某些人可以下载它们的方式?
回答
你真的不能被下载,如果您的应用程序是不安全避免文件。下面的例子允许恶意用户可以查看服务器上的任何文件:
<?php
readfile($_GET['file']);
?>
如果你想防止Apache暴露源代码,如果事情是错用PHP,在httpd.conf /的.htaccess添加此:
# In case there is no PHP, deny access to php files (for safety)
<IfModule !php5_module>
<FilesMatch "\.(php|phtml)$">
Order allow,deny
Deny from all
</FilesMatch>
</IfModule>
# the following should be added if you want to parse .php and .phtml file as PHP
# .phps will add syntax highlighting to the file when requesting it with a browser
<IfModule php5_module>
AddType text/html .php .phtml .phps
AddHandler application/x-httpd-php .php .phtml
AddHandler application/x-httpd-php-source .phps
</IfModule>
在正常情况下,没有人能够下载PHP源代码,因为它是在服务器上执行。 Web服务器识别PHP脚本并将它们传递给PHP。然后将结果传回给请求用户的浏览器。你所描述的情况只能在Web服务器配置真正混乱的情况下才能实现。
如果我还有选票,会+1,这可能是所有事情都可以说的,根本没有问题 – 2010-09-13 19:06:55
“正常情况下” - 一个额外的[安全警卫](http://en.wikipedia.org/ wiki/Defense_in_depth_(计算))总是有用的,以防万一出现错误。(一辆汽车不应该碰撞,但如果发生碰撞,驾驶员将会有安全带和气囊保护他) – Lekensteyn 2010-09-14 14:59:56
@Lekensteyn:你说得对。正如我在问题的评论中所说的,我非常喜欢你的解决方案。 – jwueller 2010-09-14 15:37:36
<?php
header('Content-disposition: attachment; filename=http://www.victim.com/phpfile.php');
header('Content-type: application/pdf');
readfile('http://www.victim.com/phpfile.php');
?>
在正常情况下,没有人能够下载PHP源代码(同其他答案),但是,如果你有一个不同的扩展示例文件:page1.bak,你有一个page1.php,page.bak被下载,如果你只是把URL ht ..//.../页面1
我已经通过PHP 5.3.10-1ubuntu3.2和Apache/2.2.22 确认了这一点。总之,避免将您的配置或测试文件放入生产目录,除非您希望它们以原始状态下载。
期权多视角也应在apache2.conf禁用或httpd.conf来避免违约久违“近状”的文件名。
你永远不会从Web服务器上运行PHP下载PHP文件。你可以在这个答案中下载从PHP提供的HTML。你不会得到PHP脚本你得到的HTML + JavaScript(如果有的话)
<?php
header('Content-disposition: attachment;
filename=http://www.victim.com/phpfile.php');
header('Content-type: application/pdf');
readfile('http://www.victim.com/phpfile.php');
?>
你究竟是什么意思?你的意思是所需文件的PHP源代码?在正确配置的浏览器上,这不会发生。 – 2010-09-13 18:57:24
@Pekka:它肯定不是一个需要进行适当配置,以防止... – 2010-09-13 19:01:36
有人告诉我,文件可以通过浏览器下载... – AAA 2010-09-13 19:02:12