【发布时间】:2017-10-31 07:14:49
【问题描述】:
当浏览器仅限制跨域 XMLHttpRequests 时,我正在努力了解同源策略提供的安全优势。
让我们看一个很好的解释同源策略的安全好处:https://security.stackexchange.com/a/8269
总结该 SO 答案中的内容,同源策略可防止恶意网站执行可能对外部域产生副作用的 XMLHttpRequest。例如,它可以防止恶意网站在您通过 XMLHttpRequest 对象登录的银行网站上执行交易。
但是这些相同的 HTTP 请求不能以不违反同源策略限制的其他方式执行吗?
例如,要在另一个域(外部域)上执行 HTTP GET 请求,我可以使用 JSONP 或类似的技术,其中我使用 Javascript 将 HTML 元素的 src 属性设置为外部域的所需 URL .这将强制浏览器对该外部域执行 GET 请求,并且该 GET 请求与所有 HTTP 请求一样,将在其标头中包含该外部域的 cookie 数据。
作为另一个示例,要执行 POST 请求,我可以使用 Javascript 创建隐藏的表单元素并触发将该表单提交到外部域。同样,外部域特定的 cookie 数据将在 POST 请求中传递。
所以我的问题是我错过了什么......如果可以轻松绕过同源策略的安全优势,那么它的意义何在?
【问题讨论】:
-
security.stackexchange.com/a/72569/911 是一个更好的答案。
-
这对 security.SE 来说是个好问题。在这里,它是题外话。
标签: javascript http security xmlhttprequest same-origin-policy