如何防止.NET中的XPath / XML注入

前端之家收集整理的这篇文章主要介绍了如何防止.NET中的XPath / XML注入前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在.NET Framework中阻止XPATH注入?

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

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

从输入字符串中删除单引号和双引号是否足够?

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

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

在.NET中:

>使用XPathExpression.Compile()预编译XPath expresion.
>使用XPathExpression.SetContext()方法XsltContext对象指定为上下文,该对象将某些特定变量解析为用户输入的值.

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

本文包含完整而完整的示例.

原文链接:https://www.f2er.com/xml/292041.html

猜你在找的XML相关文章