如何在.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表达式的更多信息.
本文包含完整而完整的示例.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。