从谷歌加载的“同源策略”和脚本 - 一个易受攻击的解决方案?
Posted
技术标签:
【中文标题】从谷歌加载的“同源策略”和脚本 - 一个易受攻击的解决方案?【英文标题】:"Same origin policy" and scripts loaded from google - a vulnerable solution? 【发布时间】:2011-01-06 19:34:01 【问题描述】:我在 SO "jQuery Linking vs. Download" 中读到了这个问题,但不知何故我不明白。
如果您在 http://yourserver.com
上托管一个页面,但从 http://ajax.googleapis.com
加载 jQuery 库,然后使用 jQuery 脚本中定义的函数,会发生什么情况?
在这种情况下“同源政策”是否不算在内?我的意思是,你能把 AJAX 调用回http://yourserver.com
吗?
正在执行的 javascript 是否被视为来自 yourserver.com
?
我的意思是,您不知道用户从某个第三方服务器(抱歉,Google)下载了什么,但在他的计算机上执行的代码仍然和他从您的服务器下载的代码一样好?
编辑:这是否意味着 _如果我使用我不太了解的第 3 方的网络统计计数器,他们可能会“注入”一些代码并调用我的网络服务,就好像他们的代码是一部分一样我的?
【问题讨论】:
(如果你在普通的 http 上运行,你并不知道任何代码来自哪里。) 【参考方案1】:网站 http://yourserver.com/ 的所有者应该信任它从其他服务器(在本例中为 Google)引用的内容。同源策略不适用于“脚本”标签。
当然,外部服务器的脚本(一旦加载)就可以访问整个 DOM:因此,如果外部内容被泄露,可能存在安全隐患。
与网络世界中的许多事情一样,它归结为信任和持续管理。
编辑:
这是否意味着_如果我使用网络 来自第 3 方的统计计数器 I 不太清楚,他们可能 “注入”一些代码并调用我的 Web 服务,就好像它们的代码是一部分一样 我的?
是的。
【讨论】:
感谢您的回答。我将其标记为已接受,尽管我仍然不喜欢在我的页面中出现 3rd 方脚本的想法。但是,正如你所说,这归结为信任......或不信任;-)【参考方案2】:回答编辑评论:是的。除非计数器包含在 iframe 标记中,否则它就像是您网站的一部分,可以调用您的网络服务、访问您的 cookie 等。
【讨论】:
iFrame 在这里扮演什么角色?如果它来自同一个域,它仍然可以执行window.parent.document.writeline("ur site iz hackd");
,并且由于跨域策略不适用于此处,它将被执行
naivists:你是对的 - 托管在同一个域上的 iframe 在同一个域上。但是给出的示例描述了不同域上的计数器,在这种情况下跨域策略适用。【参考方案3】:
是的,该政策不适用于<script>
标签。
如果有人能够破解 google 的脚本存储,它将影响从每个域提供的每个页面,这些页面使用 google.com 作为脚本的主机。
【讨论】:
同源策略是javascript的一套规则。 我明白它是什么。我的观点是它不适用于从以上是关于从谷歌加载的“同源策略”和脚本 - 一个易受攻击的解决方案?的主要内容,如果未能解决你的问题,请参考以下文章