为啥 XMLHttpRequest 的同源策略

     2023-03-03     31

关键词:

【中文标题】为啥 XMLHttpRequest 的同源策略【英文标题】:Why same origin policy for XMLHttpRequest为什么 XMLHttpRequest 的同源策略 【发布时间】:2010-12-22 06:01:03 【问题描述】:

为什么浏览器对 XMLHttpRequest 应用同源策略?这对开发人员来说真的很不方便,但它似乎在真正阻止黑客方面几乎没有什么作用。 有一些变通方法,它们仍然可以包含来自外部来源的 javascript(JSONP 背后的力量)。

在很大程度上相互关联的网络中,这似乎是一个过时的“功能”。

【问题讨论】:

这是一个有趣的话题。您的主张/主张有任何来源吗?我有兴趣了解更多详情。 只是个人经验。我提出这个问题是为了确认他们(或知道我错了) 查看 ***.com/a/26819187/895245 了解 SOP 的简单示例 【参考方案1】:

因为 XMLHttpRequest 传递了用户的身份验证令牌。如果用户使用基本身份验证或某些 cookie 登录到 example.com,然后访问了攻击者.com,则后一个站点可以创建一个 XMLHttpRequest 到 example.com 并对该用户具有完全授权并读取用户可以读取的任何私有页面(然后转发给攻击者)。

因为在 webapp 页面中放置秘密令牌是阻止简单的跨站点请求伪造攻击的方法,这意味着攻击者.com 可以在未经任何同意或交互的情况下在 example.com 上执行用户可以在 example.com 上执行的任何页面操作他们。全局 XMLHttpRequest 是全局跨站点脚本。

(即使您有一个未通过身份验证的 XMLHttpRequest 版本,仍然存在问题。例如,攻击者可以向您的 Intranet 上的其他非公共机器发出请求并读取它可以从中下载的任何文件这可能不适合公众消费。<script> 标签已经遭受这种漏洞的有限形式,但是 XMLHttpRequest 的完全可读响应会泄漏各种文件,而不是一些可以解析的不幸制作的文件作为 JavaScript。)

【讨论】:

第一个很容易修复,只是不要将基本的身份验证和cookie信息与请求一起发送到其他域。内网问题不能通过服务器端检查referer header来解决,还是XHR不发送? Referrer 检查不是一种安全机制,除了防止水蛭外,绝不能用于其他任何事情。在任何情况下,某些实现允许Referer 标头由脚本设置为任何内容(以及许多其他任意标头)。 但它就在这里。如果浏览器总是会发送referer 头并且服务器会检查它,那么XSS 攻击是不可能的。我在这里谈论的是一个理想的未来,因此不会有可以删除引用标头的实现。 Referer 标头经常被阻止或根本没有被代理转发。您还需要Vary: Referer,这会使缓存不满意。今天不应该依赖它,当然也不应该用它来构建新的安全系统。 它被称为“起源”。它以及允许安全跨站点请求的相关标准正在准备中,但要完全标准化并准备好使用还需要很长时间。有关该领域的工作,请参阅 w3.org/TR/XMLHttpRequest2。

同源策略

...些技术范围包括但不限于Silverlight,AdobeFlash,AdobeAcrobat,Dom,XMLHttpRequest。2.定义Underthepolicy,aweb 查看详情

为啥这个 URL 不属于同源策略?

】为啥这个URL不属于同源策略?【英文标题】:whythisURLisnotcomingundersameoriginpolicy?为什么这个URL不属于同源策略?【发布时间】:2012-07-0118:21:02【问题描述】:我对JSON-P的了解(来自JSON-PVSJSON和wikipedia)是-发明JSON-P是为了克服same... 查看详情

为啥以及如何在脚本标签中免除同源策略?

】为啥以及如何在脚本标签中免除同源策略?【英文标题】:Whyandhowissameoriginpolicyexemptedinscripttags?为什么以及如何在脚本标签中免除同源策略?【发布时间】:2017-10-1414:32:24【问题描述】:我有一个非常简单的问题。为什么以及... 查看详情

为啥同源策略限制对 Ajax 的访问,而不限制对 Php 的访问?

】为啥同源策略限制对Ajax的访问,而不限制对Php的访问?【英文标题】:WhySame-OriginpolicyrestrictsaccesstoAjaxbutnottoPhp?为什么同源策略限制对Ajax的访问,而不限制对Php的访问?【发布时间】:2014-09-1713:57:44【问题描述】:我正在处... 查看详情

为啥 $.post() 受同源策略约束,但提交带有 method='POST' 的表单好吗?

】为啥$.post()受同源策略约束,但提交带有method=\\\'POST\\\'的表单好吗?【英文标题】:Whyis$.post()subjecttosame-originpolicy,butsubmittingaformwithmethod=\'POST\'okay?为什么$.post()受同源策略约束,但提交带有method=\'POST\'的表单好吗?【发布时间... 查看详情

为啥从 localhost 向 localhost 发出请求时会启动同源策略?

】为啥从localhost向localhost发出请求时会启动同源策略?【英文标题】:Whyissameoriginpolicykickinginwhenmakingrequestfromlocalhosttolocalhost?为什么从localhost向localhost发出请求时会启动同源策略?【发布时间】:2012-12-2503:02:40【问题描述】:我... 查看详情

javascript中的同源策略在哪里实施? [关闭]

...描述】:浏览器如何实现同源策略我可以在任何地方查看XMLHttpRequest的源代码(我在哪里可以查看v8/Spidermonkey源代码?)javascripts如何从同一页面上的其他脚本沙盒化?【问题 查看详情

仍然使用同源策略 为啥 JSON 响应在 https 链接上使用 jquery ajax 是空白的?

】仍然使用同源策略为啥JSON响应在https链接上使用jqueryajax是空白的?【英文标题】:usingsameoriginpolicystillWhyJSONresponseisblankwithjqueryajaxonhttpslink?仍然使用同源策略为什么JSON响应在https链接上使用jqueryajax是空白的?【发布时间】:20... 查看详情

前端跨域解决

...是iframe跨域的情况,不同域名的iframe是限制互相访问的。XmlHttpRequest同源策略:禁止使用XHR对象向不同源的服务器地址发起HTTP请求。只要协议、域名、端口有任何一个不同,都被当作是不同的域,之间的请求就是跨域操作。  查看详情

与本地服务器同源策略

...器相同的服务器加载-但我收到在客户端出现此错误:“XMLHttpRequest无法加载....请求的资源上不存在\'Access-Control-Allow-O 查看详情

浏览器同源策略与跨域出现原因

...禁止对不同页面的dom进行操作           2.XMLHttpRequest同源:禁止使用XHR对象向不同源的ip发起http请求为什么会出现跨域  当浏览器的tab打开两个不同的网站页面,浏览器的1tab执行脚本时候会检查找个脚本属于哪... 查看详情

审视跨域请求实现方式

...者必须相同,才能称为“同源”!实际中的问题Ajax通过XMLHttpRequest发起请求,而XMLHttpRequest则受制于同源策略。 解 查看详情

同源策略和跨域(代码片段)

...些技术范围包括但不限于Silverlight,AdobeFlash,AdobeAcrobat,Dom,XMLHttpRequest。2.定义Underthepolicy,awebbrowserpermitsscriptscontainedinafirstwebpagetoaccessdatainasecondwebpage,butonlyifbothwebpageshavethesameorigin.AnoriginisdefinedasacombinationofURIscheme,hostname,andportnumber.判... 查看详情

前端通信跨域(代码片段)

...创建Ajax:在回答Ajax的问题时,要回答以下几个方面:1、XMLHttpRequest的工作原理2、兼容性处理XMLHttpRequest只有在高级浏览器中才支持。在回答问题时,这个兼容性问题不要忽略。3、事件的出发条件4、事件的触发顺序XMLHttpRequest有... 查看详情

同源策略:为啥 JS 代码不能向其域发出 HTTP 请求?

】同源策略:为啥JS代码不能向其域发出HTTP请求?【英文标题】:SameOriginPolicy:Whycan\'tJScodemakeanHTTPrequesttoitsdomain?同源策略:为什么JS代码不能向其域发出HTTP请求?【发布时间】:2020-08-2118:20:33【问题描述】:示例我有一个网站ht... 查看详情

跨域ajax

...浏览器同源策略并不是对所有的请求均制约:制约: XmlHttpRequest不叼: img、iframe、script等具有src属性的标签跨域,跨域名访问,如:http://www.c1 查看详情

浅析跨域请求(代码片段)

...是iframe跨域的情况,不同域名的iframe是限制互相访问的。XmlHttpRequest同源策略:禁止使用XHR对象向不同源 查看详情

当 JSONP 和 CORS 等变通方法存在时,为啥浏览器会有同源策略?

】当JSONP和CORS等变通方法存在时,为啥浏览器会有同源策略?【英文标题】:WhydobrowsershaveSame-OriginpolicieswhenworkaroundslikeJSONPandCORSexist?当JSONP和CORS等变通方法存在时,为什么浏览器会有同源策略?【发布时间】:2015-04-2907:11:03【... 查看详情