Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: proxy cache key и fastcgi cache key
On Friday 10 January 2014 00:57:16 Gena Makhomed wrote:
> On 09.01.2014 21:03, S.A.N wrote:
> > Вот наглядный пример:
> > fastcgi_param HTTP_HOST1 $http_host;
> > fastcgi_param HTTP_HOST2 $host;
> > fastcgi_param HTTP_HOST3 $server_name;
> >
> > Делаем, запрос
> > GET http://site3.dev/ HTTP/1.1
> > Host:~%#$^&*()<>?@\!."'{}[]=+|
> >
> > На выходе получим
> > _SERVER["HTTP_HOST1"]: ~%#$^&*()<>?@\!."'{}[]=+|
> > _SERVER["HTTP_HOST2"]: site3.dev
> > _SERVER["HTTP_HOST3"]: site2.dev
> >
> > Кому интересно почитать, подробней вот ссылка.
> > http://habrahabr.ru/post/166855/
> >
> > Как видите, корректное значения имеют только переменные $host и
> > $server_name, все что основывается на $http_host имеет потенциал
> > уязвимость, если бекенд доверяет этой переменой, лично я знаю несколько
> > популярных РНР фрейморков которые используют эту переменную без проверки
> > и без
> > экранирования в SQL запросах.
>
> и пофиксить эту проблему можно в исходниках nginx таким образом,
> что если вдруг в переменных $host и $http_host оказываются разные
> значения, чтобы nginx в $http_host записывал значение из $host.
>
> тогда после установки следующего обновления nginx эта уязвимость
> в backend`ах автоматически пофиксится у всех пользователей nginx.
>
> причем без какой-либо необходимости пользователям править
> файлы fastcgi.conf / fastcgi_params и все производные от них.
Так, между делом, хочу напомнить, что на CGI есть спецификация, описывающая
все переменные окружения, которые сервер должен передавать приложению.
И в ней вполне черным по белому сказано, что все переменные HTTP_* это
protocol specific переменные полученные из заголовков переданных клиентом.
И есть безопасная и специфицированная переменная SERVER_NAME.
Если кто-то в приложении использует данные полученные от клиента без
надлежащей проверки, когда в любой книжке "web-programming for dummies"
написано по 5 раз, что не следует доверять этим данным, то что я могу
предложить? Расстрел.
--
Валентин Бартенев
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|