Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: nginx-0.7.15
On Tue, Sep 09, 2008 at 11:31:13PM +0400, Maxim Dounin wrote:
> On Mon, Sep 08, 2008 at 12:40:29PM +0400, Igor Sysoev wrote:
>
> >Изменения в nginx 0.7.15
> >08.09.2008
>
> [...]
>
> > *) Добавление: теперь nginx разрешает подчёркивания в именах строк в
> > заголовке запроса клиента.
>
> BTW, в результате конструкция вида
>
> proxy_set_header X-Permit-Something "OK";
>
> (где OK или нет определяется скажем из ip-адреса клиента) с
> последующей проверкой на бекенде в cgi-скрипте под Apache
> как-нибудь вроде
>
> if ($ENV{HTTP_X_PERMIT_SOMETHING} eq 'OK') {
> ...
> }
>
> становится небезопасной, т.к. клиент может передать заголовок
> X_Permit_Something ('_' вместо '-'), этот заголовок не будет убран
> nginx'ом из запроса и в запросе к Apache будет стоять после
> заголовка X-Permit-Something, добавленного nginx'ом. Apache в
> свою очередь в переменную окружения HTTP_X_PERMIT_SOMETHING
> поместит именно последний пришедший в запросе заголовок (т.е.
> заголовок от клиента).
Хуже того. Можно послать X_Real_IP. В общем, именно из-за таких
неоднозначностей я и не хотел долгое время разрешать подчёркивание
в заголовках, которое позволяется RFCом.
Наверное, нужно сделать это настраиваемым - хочешь подчёркивания -
будь готов к сюрпризам.
> Т.е. надо явно в конфигурации ещё и говорить
>
> proxy_set_header X_Permit_Something "";
> proxy_set_header X-Permit_Something "";
> proxy_set_header X_Permit-Something "";
>
> Возможно имеет смысл такие заголовки убирать автоматически.
Автоматически это делать накладно - нужно тупо проверять все заголовки
со всеми. Вышеприведённый вариант будет работать куда быстрее.
--
Игорь Сысоев
http://sysoev.ru
|