javascript - 阻止对另一个域的请求?

标签 javascript cors xmlhttprequest xss content-security-policy

我想通过不允许我的页面上的任何内容发送 XHR/XMLHttpRequest(或其他?)请求 从管理上防止一整类 XSS 攻击至托管页面的域以外的其他域。那可能吗?

我以为我可以用 Cross-Origin Resource Sharing (CORS) 做到这一点,但似乎我错了。如果 domain-a.com 上托管的页面尝试向 domain-b.com 发出 XHR 请求,则可以在 domain-b.com 页面上使用 CORS 来控制是否允许这样做。

因此,如果 domain-a.com 页面上的某些内容试图向 hackers-r-us.com 发出 XHR 请求,只要hackers-r-us.com 设置适当的 CORS header ,该请求就会被允许。

但是,我是否可以在 domain-a.com 的页面上设置任何内容来禁止对其他域(例如hackers-r-us.com)的请求,而不管hackers-r-us.com 上的CORS header 如何?

最佳答案

要阻止对另一个域的请求,请使用 CSP — 具体来说, connect-src CSP 指令。
CSP 指令使用 Content-Security-Policy 指定。 HTTP header ,由浏览器强制执行。指定 connect-src 的 header 的最简单示例指令是:

Content-Security-Policy: connect-src 'self';
如果您在 https://example.com/foo/ 上提供文件这样,浏览器会阻止文档中的任何前端代码向其自身以外的任何来源('self')发出请求;即,浏览器仅将允许的请求限制为以 https://example.com 开头的 URL。 .
  • https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Security-Policy/connect-src有更多的细节和例子。
  • https://w3c.github.io/webappsec-csp/#directive-connect-src是定义浏览器要求的实际规范部分;该部分也有一些例子。
  • 关于javascript - 阻止对另一个域的请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60406933/

    相关文章:

    reactjs - Create React App 中 httpsCallable firebase 上的 CORS 错误

    javascript - 如何在 Web 界面中授权应用程序脚本?

    javascript - CORS - 服务器如何知道是否使用了 Jquery ajax 的 "withCredentials : true"?

    javascript - 如何添加到现有的 JSON.stringify 字符串

    javascript - BackboneJS - 为什么双击触发事件?

    javascript - Mongoose 通过在引用中搜索自动填充数据

    javascript - 从服务器加载 php 文件到 cordova ios 应用程序中

    javascript - 为什么没有凭证的 CORS 被禁止?

    javascript - Facebook Bigpipe 技术算法

    javascript - 根据数组索引对查询结果进行排序