Есть ли разница между модулем apache и cgi (в отношении безопасности)? - PullRequest
17 голосов
/ 17 сентября 2008

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

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

Ответы [ 6 ]

15 голосов
/ 17 сентября 2008

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

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

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

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

8 голосов
/ 17 сентября 2008

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

5 голосов
/ 17 сентября 2008

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

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

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

4 голосов
/ 17 сентября 2008

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

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

Для IIS / PWS:

Внимание

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

3 голосов
/ 17 сентября 2008

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

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

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

2 голосов
/ 17 сентября 2008

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

...