一尘不染

为什么跨域AJAX请求被标记为“安全风险”?

ajax

默认情况下,浏览器不允许跨站点AJAX请求。

我了解,设想不正确的跨域请求 可能
会带来安全风险。如果我使用外部站点的html或javascript,然后将其“呈现”到我的网站中,那就是一个问题。该外部代码可用于处理许多不良情况,例如访问当前用户的会话数据。

但是,如果我仅请求JSON或XML数据,并且使用适当的库来解析JSON(而不仅仅是使用eval),我将无法想象这会带来安全风险。更糟糕的是,来自该站点的内容无法正确呈现。

我有什么想念的吗?是否可以仅通过发送某种恶意数据来破坏读取json / xml的页面?


阅读 370

收藏
2020-07-26

共1个答案

一尘不染

风险不在于发出请求的网站。

例如:

  1. 爱丽丝访问她的银行并登录。
  2. 然后,她访问邪恶站点。
  3. 邪恶网站使用JavaScript导致爱丽丝的浏览器向她的银行提出请求
  4. 她的银行以Alice的帐户详细信息作为响应并将其传递给JavaScript
  5. 然后,JavaScript将它们传递给Evil Site的控制器

简而言之,它可以防止攻击者从具有Alice身份的任何站点(以及位于防火墙之后的站点,例如Alice的公司Intranet)读取私有数据。

请注意,这不会阻止不依赖于能够从站点(CSRF)读取数据的攻击,但是如果没有相同来源策略,针对CSRF的标准防御将很容易被击败。

2020-07-26