.htaccess против php.ini в mod_php и CGI
Насколько я знаю, mod_php можно настроить с помощью файлов php.ini или .htaccess, в то время как для CGI файлы .htaccess использовать нельзя.
Делает ли тот факт, что mod_php может использовать файлы .htaccess, делает его более незащищенным по отношению к CGI?
2 ответа
Ваше базовое предположение неверно, так как PHP в CGI может сканировать каждый каталог .ini
файлы.
Обе функции могут быть отключены, либо без установки
AllowOverride Options
в вашем конфиге Apache или с настройкой
user_ini.filename = # empty value!
в вашей глобальной конфигурации PHP.
Итак, в итоге, оба одинаково безопасны или небезопасны. Тем не менее, я бы не сказал, что даже если бы .htaccess
было бы возможно, это было бы более опасно, так как есть ограниченный набор опций, которые вы можете установить в .htaccess
или per-dir .ini
файлы в любом случае, в целях безопасности.
Сначала давайте разберемся с понятиями.
.htaccess - это не волшебный файл, для которого вы можете настроить вещи только для mod_php или Rewrites.
Файлы.htaccess позволяют пользователям, не являющимся администраторами, создавать конфигурации в определенных каталогах для httpd. Если вы являетесь администратором своего сервера httpd, вам не нужно их использовать, более того, разумно не использовать их в все, из-за их природы конфигураций для каждого директора, они имеют тенденцию добавлять больше сложности, головных болей и большого количества "вытягивания волос" (просто ошибка сервера поиска или переполнение стека).
Директивы HTTPD часто имеют несколько допустимых контекстов, поэтому, что касается конфигурации для Apache HTTPD, вы, вероятно, можете определить все директивы mod_php в контексте виртуального хоста или в каталоге, а не просто в ".htaccess". Если вы хотите узнать, какие директивы можно использовать с mod_php, вы можете проверить его документацию или получить все директивы, которые он поддерживает, с модулем mod_info httpd, который сообщит вам обо всех загруженных вами модулях и их списке предоставленных директив.
И вы удивитесь, тогда почему это так широко распространено? Потому что большинство php-приложений и аналогичных файлов содержат в себе файл.htaccess или более, так что вам не нужно думать и заставлять его работать сразу, хотя во многих случаях это просто вызовет проблемы в долгосрочной перспективе.
Что вы должны сделать вместо этого? Если вы являетесь администратором сервера httpd, попробуйте настраивать неглобальные директивы в virtualhost всегда над каталогом, если у вас нет другого выбора и вы никогда не используете.htaccess.
Знаете ли вы, что при каждом попадании сервер httpd получает ваши файлы.htaccess читаются как минимум три раза? и чем больше у вас будет, тем больше будет нагрузка на ваш сервер? Добавьте это к принуждению к использованию mod_php и непоточного MPM (prefork), и ваш httpd-сервер, вероятно, будет работать неидеально.
mod_php - это сторонний модуль для анализа php-файлов внутри Apache HTTPD Server. Многие люди используют его, потому что большинство дистрибутивов до сих пор поставляют его по умолчанию, поэтому большинство ленивых просто устанавливают с ним apache httpd, не задумываясь, потому что это своего рода установка и игра, но это имеет некоторые недостатки, такие как необходимость заставить httpd использовать не масштабирующий MPM, такой как prefork, потому что mod_php не является потокобезопасным, поэтому многие из этих людей жалуются на скачки задержки при увеличении нагрузки или не могут различить, когда их сценарии замедляют работу сервера httpd, потому что все, что они могут видеть Это "httpd порождает много процессов, и это занимает слишком много времени, чтобы ответить".
Настройка параметров PHP. Как я упоминал выше, так как все модули httpd, будучи сторонними или нет, mod_php предоставляет набор "директив", обеспечивающих функциональность, поэтому большинство директив mod_php предоставляют функциональные возможности, специфичные для парсинга php, в большинстве случаев те же, которые будут предоставлены директивами mod_php., и некоторые другие можно просто установить в настройках php.ini, проверьте PHP документацию для этого.
Что делать? Отдельный разбор httpd и php. проанализируйте ваши php-файлы на сервере php-fpm и сделайте ваш httpd-сервер обратным прокси-сервером для этих запросов к php-fpm с помощью mod_proxy и mod_proxy_fcgi. Более подробная информация здесь: https://wiki.apache.org/httpd/PHP-FPM