Re: image_filter и хацкеры.
Igor Sysoev
igor на sysoev.ru
Сб Мар 31 16:39:59 UTC 2012
On Sat, Mar 31, 2012 at 07:34:26PM +0400, Михаил Монашёв wrote:
> Здравствуйте, Igor.
>
> >> Есть проблема с непониманием юзерами происходящего. Если кто-то
> >> вставляет на сайт картинку с внешнего сайта, а вебсервер этого сайта
> >> вдруг начинает вместо картинки выдавать запрос на ввод логина и
> >> пароля, то юзеры вбивают туда свою логины и пароли, отправляя их
> >> нехорошим юзерам.
> >>
> >> Проблема решается через
> >> http://nginx.org/ru/docs/http/ngx_http_image_filter_module.html ,
> >> когда все картинки, вместо отдачи напрямую, проксируются с внешнего
> >> сервера и проверяются, что они картинки, а не запрос на авторизацию
> >> или вирусня какая.
> >>
> >> Но возникает другая проблема. Хакер может передавать нам урл, по
> >> которому пойдёт вебсервер за картинкой. Это чревато следующим:
> >>
> >> 1) полученная картинка может быть огромной и libgd не сможет её
> >> переварить;
> >>
> >> 2) url может вести в нашу внутреннюю подсеть и слать туда левые
> >> запросы не хотелось бы.
> >>
> >> 3) nginx начинает использоваться, как досилка на хорошем канале. Ведь
> >> достаточно в запрашиваемом урле менять один символ и nginx полезет по
> >> этому урлу. Сценарий такой. Вставляется много картинок с разными
> >> урлами на много страниц и потом на каждую страницу пригонятся по
> >> парочке юзеров. Они все шлют запросы к nginx-у, а тот фигачит их с
> >> нашего ip по жертве. Абузы от правайдеров точно будут приходить после
> >> таких атак. Конечно можно в firewall-е настроить ограничение на
> >> количество запросов к одному ip, но всёравно неприятный момент.
> >>
> >> Как избежать описанных проблем или может есть иной способ решения
> >> исходной проблемы с напрошенной авторизацией?
>
> > В Политбюро, как известно, не дураки не сидят, поэтому в Рамблере при
> > произвольном проксировании картинок image-фильтр использовался совместно с
> > http://nginx.org/ru/docs/http/ngx_http_secure_link_module.html
>
> А как secure_link спасал Политбюро от первой проблемы?
Размеры ?
http://nginx.org/en/docs/http/ngx_http_image_filter_module.html#image_filter_buffer
Ну и кроме того, можно только проверять, что ответ похож на картинку,
не используя libgd. Тогда размер буфера не критичен:
image_filter test;
> P.S.
> Есть подозрение, что соль для secure_link можно рассчитать. На
> коротких ссылках и небольшой соли через rainbow tables, например. Или,
> если соль длинная, то на графических картах или через инет-сообщества.
> И тогда получится, что надо менять соль и потом для всех ссылок
> пересчитывать хэш.
При большом желании, наверное, можно.
--
Igor Sysoev
Подробная информация о списке рассылки nginx-ru