Есть ли разница между модулем apache и cgi (в отношении безопасности)?


Например, Безопаснее ли использовать mod_php вместо php-cgi? Или более безопасно использовать mod_perl вместо традиционного cgi-scripts?

Меня в основном интересуют проблемы безопасности, но скорость может быть проблемой, если есть существенные различия.

Author: Hinek, 2008-09-17

6 answers

Безопасность в каком смысле? В любом случае это действительно зависит от того, какой скрипт запущен и насколько хорошо он написан. Слишком много сценариев в наши дни работают наполовину и неправильно выполняют проверку ввода.

Лично я предпочитаю FastCGI mod_php, так как, если процесс FastCGI умрет, появится новый, в то время как я видел, как mod_php уничтожил весь Apache.

Что касается безопасности, с помощью FastCGI вы можете технически запустить процесс php под другим пользователем, отличным от веб-сайта по умолчанию пользователь серверов.

Отдельно отметим, что если вы используете новую поддержку потоковой передачи рабочих потоков Apache, вам нужно будет убедиться, что вы не используете mod_php, так как некоторые расширения не являются потокобезопасными и вызовут условия гонки.

 15
Author: X-Istence, 2008-09-16 23:02:53

Если вы запускаете свой собственный сервер по пути модуля, это несколько быстрее. Если вы находитесь на общем сервере, решение уже принято за вас, обычно на стороне CGI. Причиной этого являются разрешения файловой системы. PHP как модуль работает с разрешениями http-сервера (обычно "apache"), и если вы не можете изменить свои скрипты для этого пользователя, вы должны изменить их на 777 - читаемый в мире. Это означает, увы, что ваш сосед по серверу может взглянуть на них - подумайте, где вы сохраните пароль доступа к базе данных. Большинство общих серверов решили эту проблему с помощью таких вещей, как phpsuexec и тому подобное, которые запускают сценарии с разрешениями владельца сценария, поэтому вы можете (должны) изменить свой код на 644. Phpsuexec работает только с PHP в качестве CGI - это более или менее все, это просто локальная машина - не имеет значения для мира в целом.

 8
Author: djn, 2008-09-16 23:19:41

Большинство дыр в безопасности возникают из-за плохого программирования в самом скрипте, поэтому действительно спорно, выполняются ли они как cgi или в модулях. Тем не менее, модули apache потенциально могут привести к сбою всего веб-сервера (особенно при использовании многопоточного MPM), и mod_php отчасти знаменит этим.

Cgi будет медленнее, но в настоящее время для этого есть решения, в основном FastCGI и друзья.

Какова ваша модель угроз?

 5
Author: Vinko Vrsalovic, 2008-09-16 22:52:55

Из PHP install.txt документ для PHP 5.2.6:

Серверные модули обеспечивают значительно более высокую производительность и дополнительные функциональность по сравнению с двоичным кодом CGI.

Для IIS/PWS:

Предупреждение

С помощью настройки CGI ваш сервер открыт для нескольких возможных нападения. Пожалуйста, прочтите наш раздел безопасности CGI, чтобы узнать, как защитить себя от этих атак.

 4
Author: Scott Swezey, 2008-09-16 23:16:22

Модуль, такой как mod_php или FastCGI, невероятно быстрее обычного CGI.. просто не делайте CGI. Как уже говорили другие, сама программа PHP представляет собой наибольшую угрозу безопасности, но игнорируя это, есть еще одно соображение - на общих хостах.

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

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

 3
Author: DGM, 2008-09-17 02:27:44

Использование встроенного модуля определенно будет быстрее, чем использование CGI. Последствия для безопасности зависят от конфигурации. В конфигурации по умолчанию они практически одинаковы, но cgi допускает некоторые более безопасные конфигурации, которые встроенные модули не могут обеспечить, особенно в контексте общего хостинга. От чего именно вы хотите обезопасить себя?

 2
Author: Leon Timmermans, 2008-09-16 22:52:13