Re: proxy cache key и fastcgi cache key
Gena Makhomed
gmm at csdoc.com
Fri Jan 10 12:06:43 UTC 2014
On 10.01.2014 13:45, Gena Makhomed wrote:
>>>> Кому интересно почитать, подробней вот ссылка.
>>>> http://habrahabr.ru/post/166855/
Хотя, есть и более простой вариант,
как на стороне nginx закрыть эту уязвимость с $http_host.
$host
in this order of precedence: host name from the request line, or host
name from the “Host” request header field, or the server name matching a
request
Eсли в request line оказывается одно значение $host,
а в “Host” request header field оказывается другое значение,
тогда просто возвращать 400 Bad Request, поскольку от нормального
клиента (браузера и т.п.) такой запрос никакогда придти не может.
Это формально правильный способ, но менее удобный для разработчиков,
потому что вполне может быть такой вариант, что это default server
и запрос придет вообще без заголовка Host: - тогда в HTTP_HOST
будет пусто и backend скорее всего нормально не отработает.
Поэтому мне больше нравится вариант в случае несоответствия
значений переменных $host и $http_host - в $http_host писать
значение $host. Тем более, что в случае запроса по ип-адресу
тогда в HTTP_HOST на backend уйдет значение из $server_name.
И любой современный код отработает на такой запрос нормально.
Это максимально надежный и максимально безглючный вариант.
А если backend - apache, в его SERVER_NAME может быть другое
значение, отличное от правильного значения $server_name из nginx.
И тут будут аналогичные проблемы, что и сейчас с $host и $http_host.
P.S.
Или сделать это поведение конфигурируемым, возвращать 400 ошибку,
или писать в $http_host значение из $host. По дефолту может быть
например, перезапись $http_host значением из $host, кому это не подходит
- могут настроить возврат 400 ошибки или даже полностью
выключить какую-либо реакцию на эти попытки взлома веб-сервера
и пропускать их as is на backend, пусть он попробует защититься.
Есть такое мнение, что это вообще идеальный вариант решения проблемы.
Не могу даже придумать кому и почему может не понравиться такой вариант.
--
Best regards,
Gena
Подробная информация о списке рассылки nginx-ru