当前位置: 首页 > 面试题库 >

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

邬令
2023-03-14
问题内容

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

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

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

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


问题答案:

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

例如:

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

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

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



 类似资料:
  • 问题内容: 为什么决定使用 XMLHTTPRequest 进行XML调用不应该跨域边界进行调用?您可以检索JavaScript,图像,CSS,iframe以及我可以想到的来自其他域的几乎所有其他内容。为什么不允许Ajax HTTP请求跨越域边界?考虑到我可以看到它被滥用的唯一方法,这似乎是一个奇怪的限制,那就是如果有人要向页面中注入Javascript。但是,在这种情况下,您只需在文档中添加一个i

  • 问题内容: 如何通过Ajax从远程URL获取内容? jQuery ajax请求被阻止,因为跨域 控制台日志 跨域请求被阻止:“相同源策略”不允许读取http://www.dailymotion.com/embed/video/x28j5hv上的远程资源。(原因:CORS标头“ Access-Control-Allow-Origin”缺失)。 跨域请求被阻止:“相同源策略”不允许读取http://w

  • 问题内容: 我发现真正令人困惑的是,为什么AJAX请求限于同一域?这背后的原因是什么? 我从外部位置请求文件没有任何问题,发出XMLHTTP请求的服务器似乎也可以很好地发送和发布到外部位置。 问题答案: 图片如下: 您来到我神话般的网站www.halfnakedgirls.com。您很乐意观看看起来像人类生理学的技术文档,但是在您的背后,一些JavaScript行正在向另一个域执行某些请求,比如说

  • 如何通过 ajax 从远程 url 获取内容? jQuery ajax请求被阻止,因为跨源 控制台日志 跨来源请求被阻止:同一来源策略不允许读取http://www.dailymotion.com/embed/video/x28j5hv.的远程资源(原因:CORS标头“Access-Control-Allow-Origin”缺失)。 已阻止跨源请求:同源策略不允许读取位于的远程资源http://w

  • 问题内容: 因此,我有了这个Go http处理程序,该处理程序将一些POST内容存储到数据存储中,并检索其他一些信息作为响应。在后端,我使用: 在我的firefox OS应用程序中,我使用: 传入的部分都一直如此。但是,我的回复被阻止了。给我以下信息: 我尝试了许多其他操作,但是无法从服务器获得响应。但是,当我将Go POST方法更改为GET并通过浏览器访问该页面时,我得到的数据太糟糕了。我无法真

  • 问题内容: 在我的项目中,我需要允许其他人向我的脚本发送ajax请求。因此,外部请求可能来自其他网站和域,也可能来自浏览器扩展。 我在脚本顶部仅添加了以下两行,以使它们能够做到: 现在我的问题是:这里是否遗漏了任何安全方面的考虑?这个简单的解决方案会带来严重的问题吗? 如果是这样,什么是更好的解决方案? 感谢您的回复。 问题答案: 如上所述,任何人都可以随时向您的页面发送请求:因此,您需要考虑的主