.net - 如何避免 XML 注入(inject)

标签 .net xml

我有用于形成 XPath 查询的输入字段值。 我应该检查输入字符串中的哪些符号以尽量减少 XML 注入(inject)的可能性?

最佳答案

document详细描述了“Blind XPath Injection”的概念。

它提供了 XPath 注入(inject)的具体示例,并讨论了防止此类注入(inject)的方法。

在“Defending against XPath Injection”一节中说:

"防御 XPath 注入(inject)本质上类似于防御 SQL 注入(inject)。应用程序必须净化用户输入。具体来说,单双 引号字符应该被禁止。这可以在应用程序中完成 本身,或在第三方产品中(例如应用程序防火墙)。 可以通过以下方式轻松测试应用程序对 XPath 注入(inject)的敏感性 注入(inject)单引号或双引号,并检查响应。如果错误有 发生了,那么 XPath 注入(inject)很可能是可能的。”

正如其他人所说,还应该注意轴和//缩写的使用。如果XPath 2.0正在使用,那么 doc()不应允许函数,因为它可以访问具有已知 URI(或文件名)的任何文档。

建议使用预编译 XPath 表达式但保留它与动态定义的参数或变量一起工作的可能性的 API。然后用户输入将只定义这些参数的内容,而不会被视为对已编译表达式的修改。

关于.net - 如何避免 XML 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/363190/

相关文章:

mysql - 将 XML 文件转换为 SQL 数据库的自动化方法?

c# - 使用自定义 XSLT 将 XML 转换为 JSON 会丢失大括号

ios - NSXMLParser 解析在 XML 文档中途中断

c# - 使用 .net 打开 Google 电子表格

c# - 获取字符串中包含的实例列表中的计数

.net - 存在非托管代码时避免 BadImageFormatException

c# - 具有唯一键和值的组数据

php - 简化 PHP DOM XML 解析——怎么做?

xml - 如何使用 XML 和 ReadHTMLTable 抓取多个页面?

c# - C# 中具有可变内容的字符串插值