簡體   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