Не делай этого:
public_html/
includes/
dont_access_me_bro.php
...
index.php
...
Сделайте это вместо:
includes/
dont_access_me_bro.php
...
public_html/
index.php
...
Объяснение
Хранение исходных файлов вне корневого каталога документа гарантирует, что пользователи не смогут получить к ним прямой доступ, изменив URI в своем HTTP-запросе. Это не защитит от эксплойтов LFI.
Чтобы узнать, где находится корень вашего документа, вам может помочь этот удобный скрипт PHP:
var_dump($_SERVER['DOCUMENT_ROOT']);
Если выдается string (25) "C:\htdocs\www\example.com"
, вы не хотите хранить свои файлы в C:\htdocs\www\example.com
или любом подкаталоге C:\htdocs\www\example.com
.
Если вы помещаете предоставленные пользователем файлы в корневой каталог документа, вы создаете риск того, что кто-то получит к ним доступ непосредственно из своего браузера, а также из-за Apache / nginx / и т. Д. что-то напутает, их загруженный файл может быть выполнен как код.
Таким образом, вы бы не хотели бы, чтобы ваши файлы были внутри C:\htdocs\www\example.com\uploaded
, вы бы хотели что-то вроде C:\uploads\example.com\
.
В этой статье подробно рассматривается безопасная загрузка файлов в PHP .