假设有一个网站foo.com
,它从网站bar.com
载入JavaScript。现在,说网站bar.com
的JavaScript尝试使用document.cookies
来读取cookie。我的印象是使用JavaScript,您可以阅读浏览器中设置的所有Cookie,而不管它们的来源。但事实证明,来自网站bar.com
的JavaScript只能访问由bar.com
设置的cookie,而不是任何其他cookie。如果是这种情况,那么脚本注入攻击如何进行cookie窃取?JavaScript和第三方Cookie
回答
但事实证明,来自网站bar.com的JavaScript只能访问由bar.com设置的cookies,而不能访问任何其他cookie。
这是不正确的。重要的是包含<script>
元素的HTML文档的位置,而不是在src属性中提到的<script>
提到的JS文件的URL。
我怀疑你的问题是,你正在访问document.cookies
当属性被称为document.cookie
(奇异!)
他们加载脚本里面的被攻击的页面。
例如,当博客系统中的评论遭到破坏时,它们会包含一个script
元素,该元素在页面呈现时执行。该脚本可以获取cookie并将其发送给攻击者的服务器。
这就是为什么你应该永远信任用户的输入,并在注释中不允许至少某些标签(或翻译每<
到<
)。但是不要在客户端这样做,因为这种预防技术很容易被绕开;测试(和更改)服务器端的恶意输入。
您只能在已经设定为给定的域名访问的cookies。从Wikipedia article on cookies:
旁名称/值对,一个cookie 还可包含过期日期,一个 路径,一个域名和 cookie是否仅用于加密 连接。 RFC 2965要求cookie 有一个版本号,但这通常是 省略。这些数据段 遵循name = newvalue对,并且用分号分隔 。例如, cookie可以由服务器 通过发送一行Set-Cookie创建: name = newvalue;到期日期=;路径= /; domain = .example.org。
域和 路径告诉该cookie 必须发送回服务器浏览器的时候 请求给定域和 路径的网址。如果未指定,则会将 默认为请求的对象 的域和路径。因此, 域名和路径字符串可能会告诉 浏览器发送Cookie,而其中的 通常不会。对于安全性 的原因,如果服务器是由域字符串指定的域名 的成员,则Cookie仅被接受 。
如果foo.com
发送cookie其中有中bar.com
域名,甚至.com
,然后JavaScript代码bar.com
可以读取该cookie。但是,大多数浏览器被配置为只在域名匹配时才接受cookie,并且会拒绝这样的cookie。
我确认cookie存在,但JavaScript无法读取它。 – roger 2010-07-29 15:00:58
- 1. 禁用第三方cookie是否也禁用由第三方javascript创建的cookie?
- 2. Facebook连接和第三方cookie?
- 3. 第三方Cookie和转化跟踪
- 4. 第三方Cookie和Flash动作脚本
- 5. 第三方Cookie跟踪器
- 6. iframe中的第三方cookie
- 7. 使用jquery cookie的第三方cookie
- 8. 在Javascript和服务器中读取第三方Cookie
- 9. 在Firefox中访问第三方Cookie
- 10. 网站上的第三方社交Cookie
- 11. Safari 5.7.1不允许第三方Cookie
- 12. 第三方cookie的 - 从其他域
- 13. 如何设置第三方Cookie
- 14. iOS6中的第三方Cookie UIWebView
- 15. 第三方“跟踪cookie”如何工作?
- 16. Piwik:从第三方cookie中提取idvisitor?
- 17. 从第三方域设置cookie
- 18. 在PHP中设置第三方Cookie
- 19. 在PHP中更新第三方Cookie
- 20. 第三方的web api验证和javascript
- 21. GWT和第三方跨域JavaScript
- 22. 如何测试触发设置第三方cookie的Javascript
- 23. 第三方脚本可以设置第一方cookie吗?
- 24. 如何将Cookie分类为第三方或第一方
- 25. Chrome扩展和Django:验证是否允许第三方Cookie
- 26. 如何在Phonegap和Android 3.2下启用第三方Cookie?
- 27. 记住自定义和第三方Cookie发布Django登录
- 28. iframe中的第三方cookie和facebook应用程序,getUser失败
- 29. Facebook应用程序(iframes)和第三方cookie
- 30. 检测IE第三方Cookie和混合内容设置
这也是CDN的工作方式,就像本站加载的jQuery脚本一样:'http:// ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js' does not活在域名'stackoverflow.com'上。 – 2010-07-29 14:45:55
@David,在输入问题时,cookie是拼写错误。我刚刚尝试alert(document.cookie),尽管设置了cookie,但我只是得到一个空字符串。我很困惑。 – roger 2010-07-29 14:59:31
我做了一个测试。该域名没有任何不同。也许您试图获取的Cookie位于不同的路径上,或者仅设置为HTTP。 – Quentin 2010-07-29 15:26:34