Как вызвать файл php, который находится за пределами public_html

Я создаю веб-сайт, и я очень озабочен безопасностью, поэтому я слышал, что если вы храните все свои файлы .php за пределами папки public_html и вызываете их с помощью другого файла .php, который находится внутри вашей папки public_html, тогда вы рискуете атака ниже. Правда ли это, если да, то как бы я это сделал. Я что-то читал об использовании .htaccess, но не уверен, что это правильный способ. Хотя я мог бы использовать включение, но я не уверен, как включение работает с параметрами.


person Community    schedule 27.07.2012    source источник
comment
из всех мер безопасности, которые вы можете предпринять, структура каталогов для php-файлов низкая. Есть хосты, которые даже не позволят вам разместить что-либо ниже корневого веб-узла.   -  person    schedule 27.07.2012
comment
Спасибо, посмотрим, разрешит ли мой хост это.   -  person    schedule 27.07.2012


Ответы (2)


Эта стратегия не предлагает огромного количества дополнительной защиты. В основном, это гарантирует, что если ваш сервер неправильно сконфигурирован и не сможет отправить сценарии PHP интерпретатору PHP, он не позволит отправить код PHP непосредственно в браузер.

Вы не храните все свои PHP-скрипты вне корня документа. Обычно вы храните только те файлы, которые не предназначены для публичного доступа за пределами корня документа. Храните включаемые файлы вне корня документа и включайте их так же, как и любой другой файл. Храните файлы, которые являются общедоступными представлениями, в корневом каталоге документа, так как они должны быть доступны через Интернет.

Существует шаблон проектирования, известный как шаблон переднего контроллера, согласно которому одна индексная страница (index.php) принимает маршруты и включает другие файлы по мере необходимости. Многочисленные PHP-фреймворки поддерживают это из коробки.

person Michael Berkowski    schedule 27.07.2012
comment
Итак, я должен хранить, скажем, мой файл config.php снаружи и включать его, чтобы получить переменные? - person ; 27.07.2012
comment
@CristianRivera Да, это обычная стратегия. - person Michael Berkowski; 27.07.2012
comment
Спасибо за вашу помощь, я посмотрю шаблон Front Controller, который звучит довольно круто. - person ; 27.07.2012
comment
мой корень документа - это моя общая папка, содержащая js-файлы, в которых есть некоторый код ajax, который будет вызывать php-скрипты вне корня документа, как я могу это сделать? если нет способа сделать это, что можно сделать? - person Linus; 23.06.2016
comment
@AnmolRaghuvanshiVersion2.0 Если вам нужно вызвать PHP из ajax, вам понадобится некоторый файл PHP в корне документа. Веб-сервер не может обслуживать файлы, которые не находятся в корне документа, поэтому вам понадобится какой-то файл, например ajax.php, в корне документа, который может включать/требовать другие файлы вне корня документа. - person Michael Berkowski; 24.06.2016
comment
@MichaelBerkowski спасибо :) это работает, но такая практика хороша или плоха? - person Linus; 24.06.2016
comment
@ AnmolRaghuvanshiVersion2.0 Это хорошая практика, обычная. В корне документа должен быть некоторый PHP, чтобы запустить ваше приложение, но большая его часть может быть скрыта за пределами корня документа. - person Michael Berkowski; 24.06.2016
comment
@MichaelBerkowski спасибо за помощь, я думал, что поступаю неправильно. - person Linus; 24.06.2016

См. функцию включения PHP: http://www.php.net/manual/en/function.include.php

Однако я сомневаюсь, что то, что вы пытаетесь сделать, повысит безопасность. Где вы услышали, что это повышает безопасность?

person joshhendo    schedule 27.07.2012
comment
Спасибо за это, я не могу вспомнить, где я видел, что это повышает безопасность, я не тратил много времени на чтение об этом. - person ; 27.07.2012