从外部域加载的 js 脚本可以访问哪些 cookie?

Mar*_*son 4 html javascript cookies

假设一个 Web 应用程序(通过 http 提供服务)有一个标签,其中 src 是另一个域。外部脚本正在处理 cookie 和/或 localStorage。它可以访问哪些域 cookie?

<!-- on example.org --> <script src='http://anotherexample.org/script.js'> <!-- This script messes with cookies -->

我的直觉告诉我,它操纵的 cookie 是属于 example.org 的。但这是如何工作的?

Ste*_*mas 5

你的直觉非常正确。Cookie 是在浏览器开始实施同源策略限制之前创建的,因此通常不受这些策略的保护。因此,当anotherexample.org访问传递的脚本时,document.cookie它将example.org在原始 HTTP 响应中看到那些传递的 cookie 。

唯一重要的例外是“HttpOnly”cookies。如果example.org选择,它可以指定它提供的 cookie 为“HttpOnly”;这些 cookie 不能被任何 JavaScript 代码访问,无论是来自anotherexample.org还是example.org它本身。