Blog

程序员的安全进阶:分享与学习系列 - XQuery 注入

February 28, 2019
Jaap Karan Singh

XQuery 注入攻击有时被认为是更常见的 SQL 注入攻击 的“小兄弟”。它们的根本原因相似,攻击者触发这些攻击所利用的命令也非常接近。只不过 XQuery 注入攻击只能在针对 XML 数据的 XPath 查询期间发生。因此,它们有时被称为 XPath 注入或简称为 XPath 攻击,因为这就是所使用的攻击方式。

绝大多数网站都使用 XML 数据库来执行关键功能,例如存储用户登录凭据、客户信息、个人身份信息以及机密或敏感数据,这使得 XQuery 攻击具有相当大的攻击面。

在本期节目中,我们将学习:

  • 攻击者如何利用 XQuery 注入
  • 为什么 XQuery 注入很危险
  • 修复此漏洞的技术。

攻击者如何触发 XQuery 注入?

与大多数计算机语言一样,XPath 的代码设计初衷是简洁。事实上,XPath 是一种标准语言,无论使用它的应用程序是什么,所有的符号和语法声明都是不变的。这意味着用于操纵 XPath 查询的命令是众所周知的,甚至可以实现自动化。

从本质上讲,XPath 查询是一个简单的语句,它告诉 XML 数据库要查找什么信息。在最简单的示例之一中,它被用于检查用户记录是否存在,然后检索其登录凭据。问题在于,由于 XPath 查询包含用户输入,黑客可以操纵查询以返回本应受到保护的信息。

例如,在试图绕过登录安全时,攻击者可以在其 XPath 查询的末尾添加变量,从而规避整个过程。示例如下:

//Employee[UserName/text()=anyone or 1=1 or a=a And Password/text()=doesnotmatter]

在这里,由于 1=1 或 a=a 语句,用户名字段被强制匹配任何用户。密码字段甚至无关紧要,因为查询只需要前半部分为真即可。

为什么 XQuery 注入很危险?

XQuery 注入攻击之所以如此危险,主要原因在于它们允许攻击者绕过登录和账户安全。而且,它们允许使用一种不因应用程序而异的标准语言以自动化方式完成此操作。攻击者可以自动扫描网站和应用程序以查找此漏洞,并在发现后立即采取行动。如果您的应用程序存在漏洞,攻击者就会对其进行破坏。除了破坏账户安全外,XQuery 攻击还可用于数据窃取。例如,攻击者可以将 XML 数据库中的所有记录转移出去。

消除 XQuery 注入攻击

与类似的漏洞一样,一个关键的防御措施就是不要信任用户输入。任何时候,只要用户能够输入信息,无论他们是否正在进行数据库查询,都应该对该过程进行审查。这就像加固实体建筑的门窗一样,因为这些是人们进入的主要途径。

对于 XQuery 注入防护,可以通过过滤来清理用户输入,或者使用用户输入的白名单验证来实现。您还可以使用参数化的 XPath 接口,类似于 SQL 查询的预处理语句。

最后,请务必对所有应用程序应用最小权限原则。这可能意味着创建一个仅具有只读权限的用户来执行所有应用程序查询。

通过使用这些技术,可以阻止针对您的网站或应用程序的所有 XQuery 注入尝试。

关于 XQuery 注入的更多信息

如需深入了解,您可以查看 OWASP 关于 XQuery 注入的说明。您还可以通过 免费演示 来测试您新掌握的防御知识,Secure Code Warrior 平台致力于将网络安全团队打造为顶尖的网络战士。如需了解更多关于攻克此漏洞及其他各类威胁的信息,请访问 Secure Code Warrior 博客。

标语

在 AI 驱动的开发成果发布前实现有效治理

评估人工智能辅助风险,在提交代码时执行安全编码策略,并加速整个软件开发生命周期的安全交付。

预约演示
标语

Explore more blogs

Lorem Issum diam quis eim leboutis ein selerisque lobortis sepitis beelrisque lobortis sepitis celerisque lobortis celeriskue filmentis celeriskue filmentis celeriskue diam

browse all
Case Study
Filter Label
This is some text inside of a div block.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Learn More
Case Study
Filter Label
This is some text inside of a div block.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

Learn More
Case Study
Filter Label
This is some text inside of a div block.

统一的安全文化:Sage 如何打造其安全倡导者项目

了解 Sage 如何通过灵活且以关系为导向的方法提升安全性,成功培养了 200 多名安全倡导者,并实现了显著的风险降低。

Learn More
Blog
Filter Label
This is some text inside of a div block.

2026年网络安全意识月:理解人工智能安全对企业防御至关重要

目前,大多数顶级人工智能公司已公开呼吁全球放缓人工智能的发展速度,以便安全防护措施能够跟上步伐。然而事实是,严重的安全问题已经显现。随着人工智能实施带来的经济成本和风险不断累积,无数安全领导者和高管团队正处于紧迫的境地。

Learn More
Blog
Filter Label
This is some text inside of a div block.

赋能要素 8:打造项目品牌

成功的安全编码项目不仅需要优质的内容。赋能要素 8 展示了如何通过品牌化将参与过程转变为一种令人向往、以地位为驱动的体验。

Learn More
Blog
Filter Label
This is some text inside of a div block.

每一位员工现在都处于 AI 网络安全的最前线

企业技术格局正以一种鲜有人预料到的速度发生剧变,直到为时已晚。我们已正式跨越了从人工编写代码和基础辅助编程,进入“智能体开发生命周期”(ADLC)的时代。虽然自主 AI 智能体有望在多个职能领域实现前所未有的效率,但它们也带来了全新的安全和监管风险。

Learn More

Secure AI-driven development before it ships

See developer risk, enforce policy, and prevent vulnerabilities across your software development lifecycle.

预约演示
No items found.