如何阻止php文件像浏览器一样“非法”下载。有什么方法可以用来下载php文件?
答案 0 :(得分:13)
如果您的应用程序不安全,则无法真正避免下载文件。以下示例允许恶意用户查看服务器上的任何文件:
<?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>
答案 1 :(得分:9)
在正常情况下,没有人能够下载PHP源代码,因为它是在服务器上执行的。 Web服务器识别PHP脚本并将它们传递给PHP。然后将结果传递回请求用户的浏览器。如果Web服务器配置确实搞砸了,那么您所描述的情况才能实现。
答案 2 :(得分:2)
<?php
header('Content-disposition: attachment; filename=http://www.victim.com/phpfile.php');
header('Content-type: application/pdf');
readfile('http://www.victim.com/phpfile.php');
?>
答案 3 :(得分:1)
在正常情况下,没有人能够下载PHP源代码(与其他答案相同),但如果您的文件具有不同的扩展名示例:page1.bak并且您有page1.php,那么page.bak如果您只是输入网址,请下载http://www.t ./ page1
我已经用PHP版本5.3.10-1ubuntu3.2和Apache / 2.2.22证实了这一点 总之,请避免将配置或测试文件放在生产目录中,除非您希望以原始状态下载它们。
还应该在apache2.conf或httpd.conf中禁用Option Multiview,以避免默认返回&#34;近似&#34;文件名。
答案 4 :(得分:0)
您永远不会从运行php的Web服务器下载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');
?>