避免XPath 注入的危险

原创 2007年10月08日 16:17:00
随着简单 XML API、Web 服务和 Rich Internet Applications (RIAs) 的发展,更多组织几乎在所有方面(从配置文件到远程过程调用)都采用 XML 作为数据格式。一些人已经使用 XML 文档代替更传统的纯文本文件或关系数据库,但是与任何其他允许外部用户提交数据的应用程序或技术相似,XML 应用程序可能容易受到代码注入的攻击,尤其是 XPath 注入攻击。
  简介

  随着新技术的出现并得到很好的沿用,针对这些技术的威胁也随之产生并逐渐增多。SQL 盲注攻击是一种为人熟知的代码注入攻击形式,但是也有很多其他形式,有些尚未得到很好的记载和了解。最近开始出现的一种代码注入攻击是 XPath 注入攻击,它利用了 XPath 解析器的松散输入和容错特性,让心怀不满的人能够在 URL、表单或其他方法上附带恶意的 XPath 查询以获得权限信息的访问权并更改这些信息。

  本文考察了通常情况下如何执行 XPath 攻击并提供了一个 Java™ 和 XML 环境中的例子。讨论了如何检测这类威胁,考察了如何减轻该威胁,最后讨论了如何应对可疑的入侵。

  入门

  本文主要介绍代码注入攻击的一种特殊类型:XPath 盲注。如果您不熟悉 XPath 1.0 或需要了解基础知识,请查看 W3 Schools XPath 教程(请参阅 参考资料 中的链接)。您还可以在 developerWorks 上找到大量的关于在各种语言环境中使用 XPath 的文章(请参阅 参考资料 中的链接)。本文使用的示例主要针对 XPath 1.0,但是也可用于 XPath 2.0。XPath 2.0 实际上增加了您可能遇到的问题。

  本文还提供了用于处理 Java JDK 5.0 的 Java 代码示例。同时本文的概念和主题是跨平台的,如果您的应用程序使用 XPath 获取特殊的代码示例,那么您必须使用 JDK 5.0。

  代码注入

  一种更常见的对 Web 应用程序的攻击和威胁是某种形式的代码注入,Wikipedia 将其定义为:……利用系统没有对其输入进行强制执行或检查的假设向计算机系统中引入(或 “注入”)代码的技术。注入代码的目的通常是绕过或修改程序的最初目标功能。如果被绕过的功能涉及系统安全,那么结果可能是灾难性的。

  快速浏览任何相关 Web 站点(比如 Web Application Security Consortium 或 Security Focus,请参阅 参考资料 中的链接)都会显示很多使用某种形式的代码注入进行的攻击,从 JavaScript 到 SQL 注入再到其他形式的代码注入攻击。最近开始出现的一种威胁(最初由 Amit Klein 于 2004 年在一篇论文中概述)是 XPath 盲注攻击(请参阅 参考资料)。这种攻击的运作跟 SQL 盲注攻击几乎完全相似,与 SQL 注入攻击不同的是,几乎没什么人了解 XPath 盲注攻击或对其进行预防。与 SQL 注入攻击类似,如果使用最佳实践开发安全的应用程序,通常可以轻松地处理该威胁。 

Python中eval带来的潜在风险

0x00 前言eval是Python用于执行python表达式的一个内置函数,使用eval,可以很方便的将字符串动态执行。比如下列代码:>>> eval("1+2") 3 >>> eval("[x f...
  • u011721501
  • u011721501
  • 2015年08月05日 15:58
  • 1621

让rm–rf 不那么危险

原文链接:http://www.prudentwoo.com/archives/559 “命令敲得多了,常在河边走,难免会湿鞋” 前几天,一手误,敲错了命令...
  • lovedieya
  • lovedieya
  • 2014年12月16日 16:26
  • 2171

JDBC如何有效防止SQL注入

JDBC批量插入数据优化,使用addBatch和executeBatch 在之前的玩转JDBC打造数据库操作万能工具类JDBCUtil,加入了高效的数据库连接池,利用了参数绑定有效防止SQL注入 ...
  • u010785585
  • u010785585
  • 2016年12月21日 07:53
  • 2849

java并发编程实战:避免活跃性危险笔记

活跃度失败是一个严重的问题。因为除了短时间的终止应用程序,没有任何机会恢复这种失败。最常见的活跃度失败就是所顺序死锁。应该在设计的时候就避免这个问题。确保多个线程在获得多个锁的时,使用一致的顺序。最好...
  • sxj159753
  • sxj159753
  • 2017年12月03日 20:39
  • 50

《Java并发编程实战》第十章 避免活跃性危险 读书笔记

一、死锁 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。 百科百科 当两个以上的运算单元,双方都在等待对方停...
  • love_world_
  • love_world_
  • 2014年05月30日 08:13
  • 1609

央视曝光危险的WiFi,其实注意5点即可避免

央视曝光免费WiFi的害处之后,更让人们多了很多无谓的担忧,其实只要做到以下几点,免费WiFi是偷不走你的钱的。 第一,谨慎使用公共场合的免费WiFi热点。官方机构提供的而且有验证机制的WiFi...
  • u013841638
  • u013841638
  • 2014年06月19日 11:28
  • 203

如何避免危险的免费wifi?

央视曝光免费wifi的害处之后,除了给金山毒霸免费打了个打广告以外,还让人们多了很多无谓的担忧,其实只要做到以下几点,免费wifi是偷不走你的钱的。 第一,谨慎使用公共场合的免费WiFi热点。官...
  • wifitsj
  • wifitsj
  • 2014年06月19日 16:17
  • 430

区块链如何才能避免未来主义的危险

我们都听过比特币将如何实现无人驾驶的Ubers自行加油并支付,该过程中无需任何人为干预。 这一切听起来是可能的,但说实话短时间内不可能实现。 目前,在硅谷以外的高速公路上没有无人驾...
  • qq53016353
  • qq53016353
  • 2016年05月10日 09:36
  • 139

《Java并发编程实战》---避免活跃性危险

在安全性和活跃性之间通常存在某种z'h
  • zhangbinalan
  • zhangbinalan
  • 2014年11月04日 10:23
  • 548

PHP解决Xss跨域攻击以及sql注入等危险字符串方案类库

由于该模块在项目中的要求是 不能提示任何信息,也不作断点操作,只作记录并且过滤危险参数。 主要功能:拦截攻击者注入恶意代码,可以防御诸如跨站脚本攻击(XSS)、SQL注入攻击等恶意攻击行为。 ...
  • u010349417
  • u010349417
  • 2014年03月13日 18:09
  • 2285
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:避免XPath 注入的危险
举报原因:
原因补充:

(最多只允许输入30个字)