阻止对另一个域的请求?
Posted
技术标签:
【中文标题】阻止对另一个域的请求?【英文标题】:Prevent request to another domain? 【发布时间】:2020-06-09 21:56:06 【问题描述】:我想通过不允许我的页面上的任何内容将 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 标头,该请求就会被允许。
但是我可以在 domain-a.com 的页面上设置什么来禁止对其他域(例如 hackers-r-us.com)的请求,而不管hackers-r-us.com 上的 CORS 标头如何?
【问题讨论】:
【参考方案1】:Content Security Policy (CSP) — 特别是 connect-src
CSP 指令。
CSP 指令使用Content-Security-Policy
HTTP 标头指定,并由浏览器强制执行。指定connect-src
指令的标头的最简单示例是:
Content-Security-Policy: connect-src 'self';
如果您在https://example.com/foo/
提供文档,浏览器会阻止文档中的任何前端代码向其自身以外的任何来源('self'
)发出请求;即,浏览器会将允许的请求限制为仅以 https://example.com
开头的 URL。
【讨论】:
以上是关于阻止对另一个域的请求?的主要内容,如果未能解决你的问题,请参考以下文章
Chrome 扩展:阻止来自外部域的内容被加载到特定域的页面中