挡路跨域XHR或在始发/来源取回呼叫 [英] Block cross domain XHR or fetch call at origination/source

查看:26
本文介绍了挡路跨域XHR或在始发/来源取回呼叫的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

让我们考虑以下场景:

  • 用户在允许CORS的现代浏览器之一中加载https://foo.com/index.html
  • index.html通过script标记从https://bar.com/script.js加载javascript。
  • 考虑这样一种假设情况:此script.js从未缓存,并且script.js的内容已更改。
  • script.jshttps://baz.comXHR发出XHR请求
  • https://baz.com已启用Access-Control-Allow-Credentials: *,因此script.js制作的XHR通过。
  • 重要的用户信息现在可以传递给https://baz.com,这存在安全风险。

CORS之前,XHR调用严格遵循同源策略,因此浏览器不允许从https://foo.com调用https://baz.com

我想知道是否有办法让https://foo.com/index.html指定XHR允许的域名列表,这样上述情况就不可能发生。

非常感谢任何指针。

[更新]

I guess I have found the answer to my question.

感谢您的体贴,🙏

最佳!

推荐答案

我想我找到了问题的答案。

使用Content-Security-Policyhttps://foo.com/connect-src指令可以将XHRfetch调用与WebSocketEventSource<a> ping一起限制到所需的域。

Content-Security-Policy: connect-src <source> <source>;

有关详细信息,请访问https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/connect-src

我一度想删除我的问题,但其他像我这样的人可以受益。

这篇关于挡路跨域XHR或在始发/来源取回呼叫的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆