Dlaczego skrypty CGi nie odczytują nagłówków ze STDIN

0

Po ostatnich lukach w zabezpieczeniach związanych z CGI przeczytałem o tym trochę i mam pytanie. Pamiętaj, że nigdy nie korzystałem z CGI i nie koduję w PHP lub Perlu, więc może coś oczywistego mi brakuje.

Jak rozumiem, komunikat odpowiedzi musi zostać napisany przez skrypt do STDOUT, w tym zarówno nagłówki, jak i treść . Dlaczego więc nie przeczytać całej wiadomości żądania STDIN, w tym zarówno nagłówków, jak i treści? Dlaczego zamiast tego nagłówki są usuwane i przypisywane do zmiennych środowiskowych?

xaxa
źródło

Odpowiedzi:

0

Komunikaty odpowiedzi do Stdout zawierają tylko dodatkowe nagłówki, które CGI chce dodać. Mogą one zostać zastąpione lub zmienione przez serwis internetowy hosta przed ich wysłaniem do klienta. Zostaną dodane również inne nagłówki.

Jeśli chodzi o przychodzące nagłówki, absolutnie nie ma sensu nakładać ciężaru i ryzyka przetwarzania ich na CGI. Błędy parsowania powodują różnego rodzaju podatności. Najlepszym rozwiązaniem jest host serwera WWW.

Jednak w przypadku FastCGI znów jest inaczej, ponieważ zmienne środowiskowe nie są już opcją, ponieważ proces CGI pozostaje rezydentem.

Adrien
źródło
Mam na myśli, że parsowanie wiadomości przychodzącej powinno być wykonane przez ostateczny program (napisany w C, perl lub cokolwiek innego). W jaki sposób jest to mniej bezpieczne niż ustawianie zmiennych środowiskowych?
xaxa
powodem jest to, że każdy inny CGI musiałby mieć do tego swój własny kod parsera. Z punktu widzenia serwera lepiej jest, jeśli wykonuje parsowanie, a następnie nie otwiera się na exploity źle napisanych CGI z błędami parsowania.
Adrien
A tak przy okazji, parsowanie ciała POST jest pozostawione samemu programowi, więc jeśli mimo to parsuje ciało, dlaczego nie przeanalizować całej wiadomości
xaxa
to prawda, ale jest też problem ze starszymi wersjami. Interfejs CGI ma host analizujący nagłówki. Będziesz musiał poradzić sobie z problemami ze zgodnością, jeśli CGI będzie musiał analizować nagłówki żądań. Istotne jest także moje zdanie na temat nagłówków wysłanych odpowiedzi. Skrypt może zepsuć wiele rzeczy (kadrowanie itp.), Emitując złe nagłówki. Serwer zawsze będzie miał możliwość sprawdzania emitowanych nagłówków, a na serwerze spoczywa odpowiedzialność za zapewnienie prawidłowej odpowiedzi i zawiera wszelkie niezbędne nagłówki, które mogły zostać pominięte przez skrypt.
Adrien