爆米花
xpath xpath注入

xpath 注入防御方法有什么

分享
  • 一颗小胡椒 2 CISM-WSE CISP-PTS 官方采纳
    一颗小胡椒2 CISM-WSE CISP-PTS
    官方采纳

    防御方式

    1. 数据提交到服务器上端,在服务端正式处理这批数据之前,对提交数据的合法性进行验证。

    2. 检查提交的数据是否包含特殊字符,对特殊字符进行编码转换或替换、删除敏感字符或字符串,如过滤[] ‘ “ and or 等全部过滤,像单双引号这类,可以对这类特殊字符进行编码转换或替换

    3. 对于系统出现的错误信息,以IE错误编码信息替换,屏蔽系统本身的出错信息或者用统一的报错页面代替(如updataxml()这类)

    4. 参数化XPath查询,将需要构建的XPath查询表达式,以变量的形式表示,变量不是可以执行的脚本。如下代码可以通过创建保存查询的外部文件使查询参数化:

      declare variable $loginID as xs:string external;
      declare variable $password as xs:string external;
      //users/user[@loginID=$loginID and@password= $password]

    5. 通过MD5、SSL等加密算法,对于数据敏感信息和在数据传输过程中加密,即使某些非法用户通过非法手法获取数据包,看到的也是加密后的信息。 总结下就是:限制提交非法字符,对输入内容严格检查过滤,参数化XPath查询的变量。

    总结下就是:限制提交非法字符,对输入内容严格检查过滤,参数化XPath查询的变量

    补充:

    什么是 XPath 注入攻击?XPath 注入攻击是指利用 XPath 解析器的松散输入和容错特性,能够在 URL、表单或其它信息上附带恶意的 XPath 查询代码,以获得权限信息的访问权并更改这些信息。 XPath 注入攻击利用两种技术,即 XPath 扫描和 XPath 查询布尔化。通过该攻击,攻击者可以控制用来进行 XPath 查询的 XML 数据库。这种攻击可以有效地对付使用 XPath 查询(和XML数据库)来执行身份验证。

  • delay 2 高级测评师 CISM-WSE 官方采纳
    delay2 高级测评师 CISM-WSE
    官方采纳

    xpath注入防御方法有:

    • 数据提交到服务器上端,在服务端正式处理这批数据之前,对提交数据的合法性进行验证。

    • 检查提交的数据是否包含特殊字符,对特殊字符进行编码转换或替换、删除敏感字符或字符串,如过滤[] ‘ “ and or 等全部过滤,像单双引号这类,可以对这类特殊字符进行编码转换或替换。

    • 对于系统出现的错误信息,以IE错误编码信息替换,屏蔽系统本身的出错信息或者用统一的报错页面代替(如updataxml()这类)。

    • 参数化XPath查询,将需要构建的XPath查询表达式,以变量的形式表示,变量不是可以执行的脚本。

    • 通过MD5、SSL等加密算法,对于数据敏感信息和在数据传输过程中加密,即使某些非法用户通过非法手法获取数据包,看到的也是加密后的信息。 总结下就是:限制提交非法字符,对输入内容严格检查过滤,参数化XPath查询的变量。

  • 趣能一姐 2 CISAW安全运维(专业级) 高级信息系统项目管理师
    趣能一姐2 CISAW安全运维(专业级) 高级信息系统项目管理师

    什么是XPath

    XPath 即为 XML 路径语言,是 W3C XSLT 标准的主要元素,它是一种用来确定 XML(标准通用标记语言的子集)文档中某部分位置的语言。

    XPath 基于 XML 的树状结构,有不同类型的节点,包括元素节点,属性节点和文本节点,提供在数据结构树中找寻节点的能力,可用来在 XML 文档中对元素和属性进行遍历。

    XPath注入原理

    XPath 注入利用 XPath 解析器的松散输入和容错特性,能够在 URL、表单或其它信息上附带恶意的 XPath 查询代码,以获得高权限信息的访问权。

    XPath注入类似于SQL注入,当网站使用未经正确处理的用户输入查询 XML 数据时,可能发生 XPATH 注入,由于Xpath中数据不像SQL中有权限的概念,用户可通过提交恶意XPATH代码获取到完整xml文档数据。

    防御方法

    过滤字符是必须的,比如[、]、转义 ‘、and、or等等。
    过滤不需要的函数:name()、count() 等等。
    加密/Hash:既然 XPath 注入会导致 XML 数据泄露,所以对敏感信息的加密是必须的。这个方法还有一个额外的好处:使得恶意的字符失效。比如对密码 MD5 的话,就意味着密码这个点没法插入单引号来破坏语句了,因为单引号会进入md5()函数计算。
    屏蔽错误信息。
    参数化 XPath 查询。这个因编程语言而异。

  • 在下炳尚 2 风险管理(专业级)RM/PL 高级信息系统项目管理师
    在下炳尚2 风险管理(专业级)RM/PL 高级信息系统项目管理师

    验证是否包含特定的 XPath 函数,可以过滤掉一些 XPath 函数,以提高安全性,当然了不能以牺牲用户体验或影响用户正常使用为前提。

  • Ann 2 等保高级测评师 NISP
    Ann2 等保高级测评师 NISP

    验证是否包含特定的 XPath 函数,可以过滤掉一些 XPath 函数,以提高安全性,当然了不能以牺牲用户体验或影响用户正常使用为前提。

  • 房乐 2 CISAW CISP-PTE
    房乐2 CISAW CISP-PTE

    什么是XPath

    XPath 即为 XML 路径语言,是 W3C XSLT 标准的主要元素,它是一种用来确定 XML(标准通用标记语言的子集)文档中某部分位置的语言。

    XPath 基于 XML 的树状结构,有不同类型的节点,包括元素节点,属性节点和文本节点,提供在数据结构树中找寻节点的能力,可用来在 XML 文档中对元素和属性进行遍历。

    XPath注入原理

    XPath 注入利用 XPath 解析器的松散输入和容错特性,能够在 URL、表单或其它信息上附带恶意的 XPath 查询代码,以获得高权限信息的访问权。

    XPath注入类似于SQL注入,当网站使用未经正确处理的用户输入查询 XML 数据时,可能发生 XPATH 注入,由于Xpath中数据不像SQL中有权限的概念,用户可通过提交恶意XPATH代码获取到完整xml文档数据。

    防御方法

    过滤字符是必须的,比如[、]、转义 ‘、and、or等等。
    过滤不需要的函数:name()、count() 等等。
    加密/Hash:既然 XPath 注入会导致 XML 数据泄露,所以对敏感信息的加密是必须的。这个方法还有一个额外的好处:使得恶意的字符失效。比如对密码 MD5 的话,就意味着密码这个点没法插入单引号来破坏语句了,因为单引号会进入md5()函数计算。
    屏蔽错误信息。
    参数化 XPath 查询。这个因编程语言而异。

  • 写回答