JavaScript и сторонние куки - PullRequest
6 голосов
/ 29 июля 2010

Скажем, есть сайт foo.com, который загружает JavaScript с сайта bar.com. Теперь, скажем, JavaScript с сайта bar.com пытается прочитать куки, используя document.cookies. У меня сложилось впечатление, что с помощью JavaScript вы можете читать все файлы cookie, установленные в браузере, независимо от их источника. Но оказывается, что JavaScript с сайта bar.com может получить доступ только к файлам cookie, установленным bar.com, а не к каким-либо другим Если это так, то как выполняются атаки с использованием скриптов, которые крадут куки?

Ответы [ 3 ]

7 голосов
/ 29 июля 2010

Но оказывается, что JavaScript с сайта bar.com может получить доступ только к файлам cookie, установленным bar.com, а не каким-либо другим.

Это не правда. Важно то, где находится HTML-документ, содержащий элемент <script>, а не URL-адрес файла JS, упомянутого в атрибуте src <script>.

Я подозреваю, что ваша проблема в том, что вы обращаетесь к document.cookies, когда свойство называется document.cookie ( Singular! )

3 голосов
/ 29 июля 2010

Вы можете получить доступ только к файлам cookie, которые были установлены для данного доменного имени. Из статьи Википедии о файлах cookie :

Рядом с парой имя / значение - cookie может также содержать дату истечения срока путь, доменное имя и ли cookie предназначен только для зашифрованных соединения. RFC 2965 мандаты куки есть номер версии, но это обычно опускается. Эти кусочки данных следовать паре имя = новое значение и разделяются точкой с запятой. Например, cookie может быть создан сервером отправив строку Set-Cookie: имя = Новое_значение; истекает = дату; Путь = /; домен = .example.org.

домен и путь сказать браузеру, что куки должен быть отправлен обратно на сервер, когда запрашивая URL данного домена и дорожка. Если не указано, они по умолчанию в домен и путь к объекту это было запрошено. В результате строки домена и пути могут указывать браузер, чтобы отправить куки, когда он обычно не будет. Для обеспечения безопасности причины, куки принимаются только если сервер является членом домен, указанный в строке домена.

Если foo.com отправил файл cookie, имя домена которого было bar.com или даже .com, то код JavaSCript на bar.com может прочитать этот файл cookie. Однако большинство браузеров настроены на прием файлов cookie, только если имя домена совпадает, и отклоняют такой файл cookie.

3 голосов
/ 29 июля 2010

Они загружают скрипты внутри атакованной страницы.

Например, когда комментарии в системе блога скомпрометированы, они содержат элемент script, который выполняется при отображении страницы. Этот скрипт может получить куки и отправить их на сервер злоумышленника.

Именно поэтому вы не должны никогда доверять вводу пользователя и запрещать хотя бы определенные теги в комментариях (или переводить каждый < в &lt;). Но не делайте этого на стороне клиента, так как эту технику предотвращения можно легко обойти; проверить (и изменить) вредоносный ввод на стороне сервера.

...