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

StackOverflow https://stackoverflow.com/questions/78108

Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

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

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

Для IIS/PWS:

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top