Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

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

Для IIS/PWS:

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

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

Ответ 5

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

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

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

Ответ 6

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