gpt4 book ai didi

.net - 如何防止 .NET 中的 XPath/XML 注入(inject)

转载 作者:数据小太阳 更新时间:2023-10-29 01:49:40 24 4
gpt4 key购买 nike

如何防止 .NET Framework 中的 XPATH 注入(inject)?

我们以前使用字符串连接来构建 XPATH 语句,但发现最终用户可以执行一些任意的 XPATH。例如:

string queryValue = "pages[@url='" + USER_INPUT_VALUE + "']";
node = doc.DocumentElement.SelectSingleNode(queryValue);

从输入字符串中去除单引号和双引号就足够了吗?

或者,.NET 框架是否支持参数化 XPATH 查询?

最佳答案

防止 XPath 注入(inject)的主要思想是预编译您要使用的 XPath 表达式并允许其中包含变量(参数),在评估过程中这些变量将被用户输入的值替换.

在 .NET 中:

  1. XPathExpression.Compile() 预编译你的 XPath 表达式.

  2. 使用 XPathExpression.SetContext() XsltContext 指定为上下文的方法 将某些特定变量解析为用户输入值的对象。

您可以阅读有关如何评估包含变量的 XPath 表达式的更多信息 here .

本文包含很好且完整的示例。

关于.net - 如何防止 .NET 中的 XPath/XML 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6381689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com