Безопасно ли хранить мои веб-страницы (php-страницы) в папке public_html на рабочем сервере?

Это мой первый php-проект, и я собираюсь сделать его онлайн очень скоро. Недавно я прочитал несколько статей о том, что нельзя хранить php-скрипты в общей папке, потому что, если сервер настроен неправильно, php-скрипты могут отображаться как чистый текст, и это является большой проблемой безопасности, если эти скрипты содержат конфиденциальную информацию (например, учетные данные БД и т. ). Но я считаю, я не должен беспокоиться. Поскольку мои php-страницы в основном состоят из нескольких include/require. Вот пример:

home.php

<?php
require_once ('../resources/app_config.php');
require_once ('../resources/includes/functions.php');
require_once ('../resources/includes/header.php');
?>
<body>
The body elements...
</body>
<?php
require_once ('../resources/includes/footer.php');
?>

Вот структура каталогов моего проекта:

resources
  |___ app_config.php
  |___ includes
       |___ functions.php
public_html
  |___ css_dir
  |___ js_dir
  |___ images_dir

  index.php
  home.php
  profile.php

поэтому мой вопрос: должен ли я беспокоиться о перемещении моих php-страниц из общей папки или не о чем беспокоиться ?? Спасибо.

Да, вы можете хранить свои php-файлы в общей папке.

Gaurang Joshi 12.02.2019 10:06

Есть ли что-то, с чем мне следует быть осторожным (связанные с php-страницами в общей папке) @GaurangJoshi

Bipul Roy 12.02.2019 10:09
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
196
2

Ответы 2

Все, что вы должны опубликовать, например index.php, должно быть помещено в папку public_html. PHP-движок вашего веб-сервера обрабатывает php и отправляет только вывод.

Вам не может быть никакого вреда, если ваш веб-сервер настроен для обслуживания выходных данных php.

Если вы используете Apache, используйте файл .htaccess для дальнейшего ограничения доступа (например, индексации папок) к папке public_html.

Я думаю, что вопрос не в том, все ли безопасно, пока все правильно настроено, а в том, «что может произойти, если что-то пойдет не так, и как защититься от этого случая».

Nico Haase 12.02.2019 10:14

Точно @NicoHaase

Bipul Roy 12.02.2019 10:15

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

Например, Фабьен Потенсье, создатель Symfony, предлагает следующее в http://fabien.potencier.org/symfony4-directory-structure.html:

  • Исходный код под src/
  • Веб-файлы под public/

Таким образом, даже если ваш PHP-процесс дает сбой, но ваш веб-сервер по-прежнему обслуживает файлы из public, никто не сможет прочитать больше, чем простая загрузка (еще раз пример Symfony: их рекомендуемый index.php требует лишь небольших изменений от https://github.com/symfony/recipes/blob/master/symfony/framework-bundle/4.2/public/index.php к вашему собственному приложению. в очень специфических случаях).

Спасибо за ваш ответ @Nico Haase. Я знаю, что есть лучшее решение, чем мое. Но пока я должен сделать это максимально простым. Так что, по-твоему, я достаточно хорош, чтобы выходить в интернет??

Bipul Roy 12.02.2019 10:49

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

Nico Haase 12.02.2019 11:03

Что ж, спросите об обратном: «процедурное кодирование» все еще хорошо? ;)

Nico Haase 12.02.2019 11:46

Другие вопросы по теме