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

Как я понимаю, сообщение ответа должно быть написано сценарием к STDOUT , включая оба заголовки и тело. Почему бы тогда не прочитать все сообщение запроса из STDIN, включая заголовки и тело? Почему заголовки удаляются и назначаются вместо переменных среды?

1 ответ1

0

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

Что касается входящих заголовков, то абсолютно бессмысленно возлагать бремя и риск их анализа на CGI. Ошибки разбора создают всевозможные уязвимости. Хост веб-сервера - лучшая вещь для этого.

Однако с FastCGI все по-другому, поскольку переменные среды больше не доступны, поскольку процесс CGI остается резидентным.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .