如何防止PHP文件被下载?有什么方法可以下载它们?

时间:2010-09-13 18:53:20

标签: php security .htaccess

如何阻止php文件像浏览器一样“非法”下载。有什么方法可以用来下载php文件?

5 个答案:

答案 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');
?>