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

Э. Г. более безопасно использовать mod_php вместо php-cgi? Или более безопасно использовать mod_perl вместо cgi-scripts?

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

6 ответов


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

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

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

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


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


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

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

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


из установки PHP.txt doc для PHP 5.2.6:

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

для IIS / PWS:

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

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


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

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

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


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