Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Access-Control-Allow-Origin
On Fri, Oct 14, 2011 at 08:51:22AM +0400, Dmitry Dedukhin wrote:
>
> 13.10.2011 21:38, anon пишет:
> > Всем привет.
> >
> > В ходе работы возникло несколько
> > вопросов по этому заголовку.
> >
> > 1)Если добавляем:
> >
> >
> > add_header Access-Control-Allow-Origin http://127.0.0.1:8055;
> > add_header Access-Control-Allow-Origin https://mail.google.com;
> > add_header Access-Control-Allow-Origin https://docs.google.com;
> >
> > То не сервер отдает пустой ответ не
> > смотря на правильно передающийся Origin.
> > Если выставить add_header Access-Control-Allow-Origin *;
> > получаем ответ.
> >
> > 2) Чем чревато все же выставление
> > Access-Control-Allow-Origin * на весь сайт? В целом
> > понятно, что 6 соединений из браузера и
> > все такое, но какую это может нести в
> > себе реальную угрозу?
> >
> > Спасибо.
> >
> > Posted at Nginx Forum:
> > http://forum.nginx.org/read.php?21,216660,216660#msg-216660
> >
> > _______________________________________________
> > nginx-ru mailing list
> > nginx-ru@xxxxxxxxx
> > http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
> Насколько я помню, в данный момент ни один браузер не поддерживает
> наличие нескольких заголовков Access-Control-Allow-Origin (а возможно
> это и задизайнированное поведение).
> "Чреватость" звездочки для меня самого остается загадкой, в голову
> приходит только то, что злоумышленник может с любого сайта не только
> делать GET/POST запросы, но и получать на них ответ. Но при этом из
> браузера нет доступа к большинству заголовков ответа
> http://www.w3.org/TR/cors/#handling-a-response-to-a-cross-origin-re (в
> частности, к кукам), так что лично я не вижу никакой потенциальной
> опасности от звездочки.
> Может быть кто-то поправит меня и опасность в звездочке таки есть...
>
> PS: возможно получится проверять заголовок Referer в конфиге (например,
> с помощью серии директив if) и выставлять нужное значение как-то так:
>
> set $origin "http://mysite.ru";
> if ($http_referer ~* ^http://trusted_domain1\.ru) {
> set $origin "http://trusted_domain1.ru";
> }
> if ($http_referer ~* ^http://trusted_domain2\.ru) {
> set $origin "http://trusted_domain2.ru";
> }
> add_header Access-Control-Allow-Origin $origin;
Не надо if'ы:
map $http_referer $origin {
default http://mysite.ru;
~*^http://trusted_domain1\.ru http://trusted_domain1.ru;
~*^http://trusted_domain2\.ru http://trusted_domain2.ru;
};
--
Igor Sysoev
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|