Я медленно изучаю PHP, MySQL, а также некоторые HTML, используя localhost как мой веб-сервер. Тем не менее, я начинаю задаваться вопросом, как мои .php-файлы будут защищены, если я положу это в Интернете.
У меня есть веб-страница на localhost / app.php, которая включает в себя форму, некоторый PHP-код и некоторые MySQL-запросы. Информация о учетных данных MySQL находится в одном каталоге выше, где находится app.php, но как я могу запретить незнакомцам получать доступ к содержимому app.php, включая структуру данных MySQL, команды, которые я использую, и т. Д. Когда вы просматриваете исходный код в браузере вы видите только часть HTML, но не могли ли кто-то загрузить app.php и посмотреть в фактический файл, если он захочет?
Каков правильный способ построения файловой структуры? Ссылки или комментарии очень ценятся! ТИА!
Ну, если вы используете расширение .php, Apache будет обслуживать анализируемую версию – эхо и печать будут выводиться, но ваши переменные не будут.
Если вас все еще беспокоит, есть несколько способов сделать ваши файлы более безопасными.
/home/user/my_files/
, вы можете использовать my_files
как www.my-domain.com/files
. Сценарий не будет доступен там для запросов, но он будет доступен для чего-то на сервере. define( 'IN_APPLICATION', 1 );
в ваших конфигурационных файлах есть if( !defined( 'IN_APPLICATION' ) ) die( 'No direct script access allowed' );
Нет. Php анализируется, если страница запрашивается по HTTP. Человек должен будет знать уязвимость в вашем приложении, Apache или PHP или иметь другой доступ, такой как FTP.
Вы можете перемещать файлы из своего wwwroot и ссылаться на них в другом месте. Кроме того, никогда не называйте свои файлы include как .inc
. всегда называйте их `.php.
Попробуйте загрузить файл .php на свой localhost. Вы обнаружите, что все, что у вас есть, – это HTML-код. Это из-за того, как работает сервер. Вот пример с файлом php
Клиент (обычно веб-браузер) отправляет HTTP-запрос на сервер, то есть:
GET /app.php HTTP / 1.1
Сервер принимает запрос и обрабатывает его. В случае php-файла сервер должен обработать файл php в HTML.
HTML возвращается клиенту.
Если вы используете Apache и хотите, чтобы файлы php обрабатывались, убедитесь, что эти правила находятся в вашем apache2.conf:
LoadModule php5_module modules/libphp5.so AddHandler php5-script .php AddType text/html .php
И, просто для удовольствия, если вы когда-либо хотели открыть свой php-источник, добавьте эту строку в apache2.conf:
AddType application/x-httpd-php-source .phps
Чтобы быть в безопасности, убедитесь, что ваши файлы конфигурации mySQL и все остальное, что вы не хотите публиковать, хранятся вне каталога, в котором вы обслуживаете. Документы apache – отличный ресурс для понимания того, как все это работает.
Хотя с этим не возникает прямой проблемы (многие приложения делают это, и поскольку источник не может быть замечен без взлома вашего сайта), многие приложения решают это с помощью «frontcontroller». Передний контроллер много используется в MVC-структурированных (Model, View Controller) приложениях.
Типичная структура выглядит так:
приложение / (приложения, контроллеры и представления) lib / (библиотеки, общая логика) config / (ваши конфигурации) web / (ваш веб-ресурс, только для css, изображений, javascript и т. д.) web / index.php (ваш фронтконтроллер)
Только разоблачая index.php и размещая все php и конфиденциальные файлы вне вашего веб-сайта, они не будут доступны никому из Интернета.