【问题标题】:What security benefit does the Same Origin policy provide beyond security by obscurity?除了默默无闻的安全性之外,同源策略还提供了哪些安全优势?
【发布时间】: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 请求中传递。

所以我的问题是我错过了什么......如果可以轻松绕过同源策略的安全优势,那么它的意义何在?

【问题讨论】:

标签: javascript http security xmlhttprequest same-origin-policy


【解决方案1】:

同源策略阻止您读取来自不同域的响应

正如您所发现的,没有什么能阻止您向其他域发送请求,这就是存在 CSRF 漏洞的原因。

事实上,防御(CSRF 令牌)之所以有效,是因为同源策略可防止您从其他域窃取令牌。

【讨论】:

  • 我不能创建一个指向外部域的 iframe,然后使用 javascript 获取该 iframe 的内容吗?本质上不是获取响应数据吗?
  • @VKK:不;这正是同源政策阻止您做的事情。
【解决方案2】:

SOP 不会阻止您发送请求(带有凭据),它会阻止您访问响应数据。为确保提交安全,需要使用CSRF tokens

【讨论】:

  • 与我上面的评论相同:我不能创建一个指向外部域的 iframe,然后使用 javascript 获取该 iframe 的内容吗?本质上不是获取响应数据吗?
  • @VKK 不,SOP 政策还阻止您访问外部 (i) 框架的内容。甚至是绘制了外国图像的画布的图像数据。如果您找到解决方法,那是浏览器错误 - 并且是非常有价值的零日 :-)
猜你喜欢
  • 2011-05-30
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 2011-08-25
  • 2020-03-25
  • 2014-04-22
  • 2012-01-18
  • 2020-06-14
相关资源
最近更新 更多