繁体   English   中英

如何防止PHP文件被下载? 有人可以通过哪些方式下载它们?

[英]How to prevent PHP files from being downloaded? And what are some ways someone can download them?

我如何防止通过浏览器“非法”下载 php 文件。 有人可以使用哪些方法来下载 php 文件?

如果您的应用程序不安全,您就无法真正避免下载文件。 以下示例允许恶意用户查看您服务器上的任何文件:

<?php
readfile($_GET['file']);
?>

如果您想在 PHP 出现问题时阻止 Apache 暴露源代码,请在您的 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 源代码,因为它是在服务器上执行的。 网络服务器识别 PHP 脚本并将它们传递给 PHP。 然后将结果传递回请求用户的浏览器。 你描述的情况只能实现,如果网络服务器配置真的搞砸了。

<?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 将被下载,如果你只需输入网址 ht..//.../page1

我已经用 PHP 版本 5.3.10-1ubuntu3.2 和 Apache/2.2.22 确认了这一点 总之,除非您希望它们以原始状态下载,否则避免将您的配置或测试文件放在生产目录中。

还应在 apache2.conf 或 httpd.conf 中禁用 Option Multiview 以避免默认返回“near-like”文件名。

您永远不会从运行 php 的 Web 服务器下载 php 文件。 您可以像this answer一样下载从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');
?> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM