Intereting Posts

Как предотвратить загрузку файлов 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, поскольку он выполняется на сервере. Вебсервер распознает 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 загружается, если вы просто вставляете url ht ..//…/ page1

Я подтвердил это с помощью PHP версии 5.3.10-1ubuntu3.2 и Apache / 2.2.22. Вкратце, не ставьте свои конфигурационные или тестовые файлы в производственный каталог, если вы не хотите, чтобы их загружали в исходное состояние.

Опция Multiview также должна быть отключена в apache2.conf или httpd.conf, чтобы избежать дефолта по возврату «близкого» имени файла.

Вы никогда не загружаете php-файл с веб-сервера, на котором запущена php. Вы можете загрузить HTML-код, поставляемый с php, как в этом ответе. Вы не получаете 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'); ?>