PHP включает расширения файлов? - PullRequest
4 голосов
/ 02 августа 2010

Для обязательных / включенных файлов в PHP лучше использовать .inc расширения против .inc.php против .php расширения?

Ответы [ 3 ]

15 голосов
/ 02 августа 2010

Иногда люди используют расширение .inc, а затем выполняют настройку сервера, чтобы предотвратить доступ к файлам .inc через веб-браузер. Этот может быть хорошим, если он сделан абсолютно правильно опытным системным администратором, но есть и лучший способ: любой файл, к которому не должны обращаться веб-пользователи, должен храниться вне корня вашего документа. Как только эти файлы появятся вне сети, вы можете использовать любое расширение, какое захотите. .php - определенно разумный выбор для подсветки синтаксиса, общего здравого смысла и т. Д.

1 голос
/ 03 августа 2010

Мое личное предпочтение заключается в том, что все, что находится в корне документа, является файлом .php, чтобы указать, что оно непосредственно выполняется веб-сервером, а все, что является библиотекой, является файлом .inc, хранящимся в параллельном каталоге, чтобы указать, что оно НЕ напрямую. исполняемый файл.

Моя стандартная конфигурация

/home/sites/example.com/html/ - все, что здесь можно «безопасно» раскрыть, если PHP не работает и обслуживает необработанный код

/home/sites/example.com/inc/ - библиотеки, файлы конфигурации с паролями (например, класс соединения с базой данных с учетными данными БД) и т. Д. Все, что не должно отображаться, поскольку для этого нет причин.

Хотя вы, безусловно, можете настроить Apache так, чтобы он запрещал доступ к файлам .inc и оставлял их в корне, но вы зависите от Apache для обеспечения вашей безопасности. Если PHP может выйти из строя в Apache и раскрыть ваш код, то блоки .inc ТАКЖЕ также могут выйти из строя и также раскрыть внутреннюю часть вашего кода.

Конечно, если Apache кашляет кровью по всему полу, нет никаких причин, по которым защита от обхода каталога также не может выйти из строя и позволить кому-то сделать http://example.com/../inc/seekritpasswords.txt.

В какой-то момент вы просто должны признать, что если что-то хранится где-либо на веб-сервере, существует вероятность, что сбой может позволить получить доступ к необработанным данным и раскрыть все. Сколько времени и усилий вы хотите потратить на защиту от этого, зависит только от вас.

1 голос
/ 03 августа 2010

Apache может иногда (из-за ошибок или серьезных сбоев) подавать файлы .php в виде текста (случалось со мной несколько раз на виртуальном хостинге) .... Я думаю, что вы можете использовать любое расширение, которое хотите, пока вы неt хранить ваши файлы в общей папке.

Допустим, ваш сайт находится в / home / user / public_html /

создать другую папку / home / user / lib_php /

есть файлы:



(1) ... / lib_php / one.class.php с

class one { 
//...
}



(2).../lib_php/two.function.php с

function two() { 
//...
}

, и у вас есть основной index.php в / public_html <?php include_once('../lib_php/one.class.php'); include_once('../lib_php/two.function.php');</p> <p>$x=a; $b=two($x); $c=new one; //etc..

или

 
<?php
require_once('/home/user/lib_php/the.file.php'); 

Таким образом, вы принимаете все меры предосторожности, файлы не доступны напрямую, но могут использоваться вашими скриптами ...

...