当前位置: 首页 > 知识库问答 >
问题:

可以反映XSS(跨站点脚本)攻击发生在提供非HTML响应的REST API上

郏实
2023-03-14

可以反射 XSS(跨站点脚本)攻击发生在 REST API 上,该 API 接收 XML 请求负载,提供 XML 响应。请求或响应中没有 html 内容。

我已经浏览了相当多的关于XSS的文档,现在我认为这不适用于不提供html内容的REST API,这种理解是否正确?但是,我们正在对收到的请求进行验证,以检查是否存在任何类型的标记(

关于我们服务的几点,

  1. 我们的REST API不会接收或响应HTML数据
  2. 我们没有直接从最终用户那里获得任何输入或请求(攻击者可能主要来自恶意最终用户)
  3. 我们不会直接向XSS可能性最大的最终用户/HTML呈现系统(浏览器)发送XML响应
  4. 我们接受这个请求

在这种情况下,XSS的风险有多大?

(此查询背后的原因是我们得到了一个checkmarx高严重性错误,其中表明我们容易反射XSS,我认为这可能是误判。我们使用的是spring boot应用程序。)

共有2个答案

舒斯伯
2023-03-14

是的,XSS攻击甚至可能发生在只提供XML的服务中。如果在浏览器加载的XML文档中包含以下内容,将会执行该脚本:

xml prettyprint-override"><script xmlns="http://www.w3.org/1999/xhtml">alert("XSS")</script>

这可能是一个安全漏洞,即使该服务不打算在浏览器中使用。这是因为攻击者可以使受害者的浏览器加载带有注入的javascript的XML文档(例如使用iframe),并在您的网站上运行他的恶意脚本。这可能会产生各种后果:

  • 如果另一个服务在完全相同的域上运行,攻击者可以访问它。
  • 攻击者还可以为每个父域设置cookie(TLD和其他一些例外除外),这些cookie可能用于尝试利用其他服务器。
  • 攻击者可以利用它进行网络钓鱼,在地址栏中呈现合法的url。

也有可能使用XML注入来欺骗其他服务做一些意想不到的事情。有时,其他服务不经过任何验证就将用户输入传递给API。编写糟糕的服务可能会在普通的HTML网站上暴露XSS。

无论如何,我建议您修复发现的任何XSS漏洞,即使您认为它不可利用。

裴金鑫
2023-03-14

这主要取决于响应内容类型。只要它类似于applicationin/xmltext/xml(而不是 or ),api本身就不会受到xss的攻击,因为现代浏览器即使显示也不会运行脚本。

但是请注意,它仍然容易受到xml注入的攻击,如果Checkmarx发现它是xss,那么很可能存在某种可能的注入。确保用户不可能在响应中创建xml标记或属性。这样做的方法与防止xss的方法非常相似。但是请注意,在将用户输入写入xml时,您不需要对其进行html编码,因为它不是html,但是您需要对值进行xml编码。

还要注意,验证输入很好,但一般来说,注入攻击是通过上下文感知输出编码来防止的,即。对值、xml属性等应用适当的编码类型。很多时候,你不能在输入端完全实现这一点。(输入验证仍然有意义,您也应该这样做,但是最好通过输出编码来防止注入。)

 类似资料:
  • 2.4. 跨站脚本攻击 跨站脚本攻击是众所周知的攻击方式之一。所有平台上的Web应用都深受其扰,PHP应用也不例外。 所有有输入的应用都面临着风险。Webmail,论坛,留言本,甚至是Blog。事实上,大多数Web应用提供输入是出于更吸引人气的目的,但同时这也会把自己置于危险之中。如果输入没有正确地进行过滤和转义,跨站脚本漏洞就产生了。 以一个允许在每个页面上录入评论的应用为例,它使用了下面的表单

  • 描述 跨站脚本,或者 XSS,涉及到站定包含非预期的 JavaScript 脚本代码,它随后传给用于,用户在浏览器中执行了该代码。它的一个无害示例为: alert('XSS'); 这会调用 JavaScript 函数alert,并创建一个简单的弹出窗口,带有文本XSS。现在,在这本书的前一个版本中,我推荐你在报告中使用这个例子。但是,一个非常成功的黑客告诉我这是个糟糕的例子,因为漏洞的接收者通常

  • 只要应用程序获取不受信任的数据并将其发送到客户端(浏览器)而未经验证,就会发生跨站点脚本(XSS)。这允许攻击者在受害者的浏览器中执行恶意脚本,这可能导致用户会话劫持,破坏网站或将用户重定向到恶意站点。 下面我们借助一个简单图表了解这个漏洞的威胁代理,攻击向量,安全弱点,技术影响和业务影响。 威胁代理 - 内部/外部用户或管理员发送给系统的不受信任的数据。 攻击者的方法 - 发送不受信任的数据/基

  • 问题内容: Jeff实际上在Sanitize HTML中发布了有关此内容的信息。但是他的示例在C#中,而实际上我对Java版本更感兴趣。有没有人有更好的Java版本?他的示例足以将直接从C#转换为Java吗? [更新]我悬赏这个问题,因为当我问这个问题时,SO不如今天(*)受欢迎。至于与安全相关的任何事物,研究它的人越多,它就越好! (*)实际上,我认为它仍处于封闭测试阶段 问题答案: 不要使用正

  • 本文向大家介绍Laravel5中防止XSS跨站攻击的方法,包括了Laravel5中防止XSS跨站攻击的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Laravel5中防止XSS跨站攻击的方法。分享给大家供大家参考,具体如下: Laravel 5本身没有这个能力来防止xss跨站攻击了,但是这它可以使用Purifier 扩展包集成 HTMLPurifier 防止 XSS 跨站攻击。 1、