- 浏览: 451216 次
- 性别:
- 来自: 江门
文章分类
最新评论
-
ctz_131415:
谁能告诉我这个分页控件如何添加到窗口上?谢谢了
C# Winform DataGridView 公共分页实现 -
omymy:
FrmPage_Shown是放在页面加载时的load事件里的, ...
C# Winform DataGridView 公共分页实现 -
qie:
如何使用该分页控件?
C# Winform DataGridView 公共分页实现 -
anyanlonga:
看地图干什么用啊,如果查公交的话,自认为还是白度好
Android 上创建和地图相关的应用,用 Google 地图 API 好,还是百度等第三方地图 API 好 -
dedepro:
果然很强。
CSS层 固定置顶部兼容IE6等以上浏览器
随着简单 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 注入攻击类似,如果使用最佳实践开发安全的应用程序,通常可以轻松地处理该威胁。
XPath 攻击
一般说来,大多数 Web 应用程序使用关系数据库存储和检索信息。例如,如果您的 Web 站点需要身份验证,那么您可能拥有一个 users 表,其中包含惟一 ID、登录名、密码,也许还有一些其他信息,比如角色。从 users 表中检索用户的 SQL 查询可能类似于清单 1。
清单 1. 从 users 表中检索用户的 SQL 查询Select * from users where loginID='foo' and password='bar' 在这个查询中,用户必须提供 loginID 和 password 作为输入。如果攻击者在 loginID 字段中输入:' or 1=1 并在 password 中输入:' or 1=1,则形成的查询将类似清单 2。
清单 2. 从攻击者输入形成的查询Select * from users where loginID = '' or 1=1 and password=' ' or 1=1这个条件会一直匹配,因此攻击者可以进入系统。XPath 注入的原理大体类似。但是,假设您拥有的不是一个 users 表,而是一个 XML 文件,其中包含了如清单 3 所示的用户信息。
清单 3. user.xml<?xml version="1.0" encoding="UTF-8"?>
<users>
<user>
<firstname>Ben</firstname>
<lastname>Elmore</lastname>
<loginID>abc</loginID>
<password>test123</password>
</user>
<user>
<firstname>Shlomy</firstname>
<lastname>Gantz</lastname>
<loginID>xyz</loginID>
<password>123test</password>
</user>
<user>
<firstname>Jeghis</firstname>
<lastname>Katz</lastname>
<loginID>mrj</loginID>
<password>jk2468</password>
</user>
<user>
<firstname>Darien</firstname>
<lastname>Heap</lastname>
<loginID>drano</loginID>
<password>2mne8s</password>
</user>
</users> 在 XPath 中,类似于 SQL 查询的语句如清单 4 所示。
清单 4. 匹配 SQL 查询的 XPath 语句//users/user[loginID/text()='abc' and password/text()='test123']要执行类似的攻击以绕过身份验证,您可能会使用类似清单 5 的方法。
清单 5. 绕过身份验证//users/user[LoginID/text()='' or 1=1 and password/text()='' or 1=1]您可能在 Java 应用程序中有一个诸如 doLogin 之类的方法,使用 清单 3 中的 XML 文档再次执行身份验证。可能类似于清单 6。
清单 6. XPathInjection.javaimport java.io.IOException;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import javax.xml.parsers.*;
import javax.xml.xpath.*;
public class XpathInjectionExample {
public boolean doLogin(String loginID, String password)
throws ParserConfigurationException, SAXException,IOException,
XPathExpressionException {
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse("users.xml");
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr = xpath.compile("//users/user[loginID/text()='"+loginID+"'
and password/text()='"+password+"' ]/firstname/text()");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
//print first names to the console
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println(nodes.item(i).getNodeValue());}
if (nodes.getLength() >= 1) {
return true;}
else
{return false;}
}
}对于 清单 6,如果您传入一个 login 和 password,比如 loginID = 'abc' 和 password = 'test123',则该类将返回 true(而且就本例而言,还会打印一列 first name 到控制台)。例如,如果您传入类似 ' or 1=1 or ''=' 的值,那么您也会得到 true 返回值,因为 XPath 会最终发现字符串变成了类似清单 7 的样子。
清单 7. 字符串//users/user[loginID/text()='' or 1=1 or ''='' and password/text()='' or 1=1 or ''='']这个字符串会在逻辑上使查询一直返回 true 并将一直允许攻击者访问系统。
另一种可能性更大而且可能更加麻烦的 XPath 攻击方式是,攻击者可以利用 XPath 在应用程序中动态地操作 XML 文档。
提取 XML 文档结构
用于绕过身份验证的查询还可以用于提取 XML 文档的信息。假设攻击者猜测 XML 文档中第一个子节点的名称是 loginID 并且想要确认一下。攻击者可以提供清单 8 所示的输入。
清单 8. 攻击者提供的输入abc' or name(//users/LoginID[1]) = 'LoginID' or 'a'='b 与 清单 7 中的 1=1 不同,清单 8 中给出的表达式检查第一个子节点的名称是否为 loginID。形成的查询如清单 9 所示。
清单 9. 查询String(//users[LoginID/text()='abc' or name(//users/LoginID[1]) =
'LoginID' or 'a=b' and password/text()='']) 用试凑法,攻击者可以检查 XML 文档的各个子节点并通过查看这个 XPath 表达式是否能促成成功的身份验证以收集信息。攻击者然后可能编写出一个简单的脚本,发送各种 XPath 注入并从系统中提取 XML 文档,如 Klein 的论文中提及的那样。
XPath 注入预防
因为 XPath 注入攻击与 SQL 注入攻击非常类似,所以很多预防方法也类似。这些预防方法中,多数也可以类似地应用于预防其他类型的代码注入攻击。
身份验证
不论面对何种应用程序、环境或语言,都应遵守以下的最佳实践:
假定所有输入都可疑。
不仅要验证数据的类型,还要验证其格式、长度、范围和内容(例如,一个简单的正则表达式 if (/^"*^';&<>()/) 就可以找出大多数可疑的特殊字符)。
在客户机和服务器上都要验证数据,因为客户机验证非常容易绕过。
根据安全软件开发的最佳实践,遵守一致的编写和 [missing word] 策略实现应用程序安全性(请参阅 参考资料 中 Apache 的优秀 Web 服务列表)。
在发布应用程序之前测试已知的威胁。参考资料 中的 “Fuzz Testing” 介绍了测试方法。
参数化
与多数数据库应用程序不同,XPath 不支持参数化查询的概念,但是您可以使用其他 API(比如 XQuery)模拟该概念。您不需要构建字符串表达式,然后传给 XPath 解析器以便在运行时动态执行(如清单 10 所示),而是通过创建保存查询的外部文件使查询参数化(如 清单 11 所示)。
清单 10. 传给 XPath 解析器的字符串"//users/user[LoginID/text()=' " + loginID+ " ' and password/text()='
"+ password +" ']" 在清单 11 中,通过创建保存查询的外部文件使查询参数化。
清单 11. dologin.xqdeclare variable $loginID as xs:string external;
declare variable $password as xs:string external;//users/user[@loginID=
$loginID and @password=$password]对 清单 11 稍加修改,也可以完成同样的功能,如清单 12 所示。
清单 12. XQuery 片段Document doc = new Builder().build("users.xml");
XQuery xquery = new XQueryFactory().createXQuery(new File("
dologin.xq"));
Map vars = new HashMap();
vars.put("loginid", "abc");
vars.put("password", "test123");
Nodes results = xquery.execute(doc, null, vars).toNodes();
for (int i=0; i < results.size(); i++) {
System.out.println(results.get(i).toXML());
}这样可以防止重要的显式变量 $loginID 和 $password 在运行时被作为可执行表达式处理。这样就分开了执行逻辑与数据;遗憾的是,查询参数化并不是 XPath 功能的一部分,但是可以从 SAXON 之类的开源解析器中免费获取(请参阅 参考资料 中的链接)。某些其他解析器支持这种功能,而且它可以作为防止 XPath 注入的一种可靠方式。
Web 服务器上的数据检查
要防止 XPath 注入和其他形式的代码注入,应该检查所有从 Web 服务器传到后端服务的数据。例如,对于 Apache 您可以使用 Mod_Security 筛选器(比如 SecFilterSelective THE_REQUEST "(\'|\")")查找字符串中的单引号和双引号并禁止它们。您也可以使用同样的方法筛选和禁止其他形式的特殊字符,比如 ("*^';&><</),这些字符都可以用于各种注入攻击。这种方法对于使用基于 REST 或 SOAP 的 XML 服务的应用程序可能很好,但是在其他情况下可能不适用。通常的最佳实践是,从最初的设计到应用程序实现都采用智能安全设计。
如果系统被破坏了怎么办?
大多数组织都考虑到了威胁检测和威胁拒绝,但很少为此作出规划,对于一名合格的安全专家,如果系统遭到破坏怎么办。您应该总是假定最坏的场景并作出规划。
这在很大程度上取决于组织和遭遇入侵的系统类型,但通常的最佳方法是,让系统脱机并等待专业的论证工程师检查系统。有时人们直接让系统脱机并重映像驱动器,但是这种做法消除了入侵的证据和入侵者可能给系统造成的其他损害的信息。如果可能的话,一直保留系统状态以待安全专家检查。
简介
随着新技术的出现并得到很好的沿用,针对这些技术的威胁也随之产生并逐渐增多。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 注入攻击类似,如果使用最佳实践开发安全的应用程序,通常可以轻松地处理该威胁。
XPath 攻击
一般说来,大多数 Web 应用程序使用关系数据库存储和检索信息。例如,如果您的 Web 站点需要身份验证,那么您可能拥有一个 users 表,其中包含惟一 ID、登录名、密码,也许还有一些其他信息,比如角色。从 users 表中检索用户的 SQL 查询可能类似于清单 1。
清单 1. 从 users 表中检索用户的 SQL 查询Select * from users where loginID='foo' and password='bar' 在这个查询中,用户必须提供 loginID 和 password 作为输入。如果攻击者在 loginID 字段中输入:' or 1=1 并在 password 中输入:' or 1=1,则形成的查询将类似清单 2。
清单 2. 从攻击者输入形成的查询Select * from users where loginID = '' or 1=1 and password=' ' or 1=1这个条件会一直匹配,因此攻击者可以进入系统。XPath 注入的原理大体类似。但是,假设您拥有的不是一个 users 表,而是一个 XML 文件,其中包含了如清单 3 所示的用户信息。
清单 3. user.xml<?xml version="1.0" encoding="UTF-8"?>
<users>
<user>
<firstname>Ben</firstname>
<lastname>Elmore</lastname>
<loginID>abc</loginID>
<password>test123</password>
</user>
<user>
<firstname>Shlomy</firstname>
<lastname>Gantz</lastname>
<loginID>xyz</loginID>
<password>123test</password>
</user>
<user>
<firstname>Jeghis</firstname>
<lastname>Katz</lastname>
<loginID>mrj</loginID>
<password>jk2468</password>
</user>
<user>
<firstname>Darien</firstname>
<lastname>Heap</lastname>
<loginID>drano</loginID>
<password>2mne8s</password>
</user>
</users> 在 XPath 中,类似于 SQL 查询的语句如清单 4 所示。
清单 4. 匹配 SQL 查询的 XPath 语句//users/user[loginID/text()='abc' and password/text()='test123']要执行类似的攻击以绕过身份验证,您可能会使用类似清单 5 的方法。
清单 5. 绕过身份验证//users/user[LoginID/text()='' or 1=1 and password/text()='' or 1=1]您可能在 Java 应用程序中有一个诸如 doLogin 之类的方法,使用 清单 3 中的 XML 文档再次执行身份验证。可能类似于清单 6。
清单 6. XPathInjection.javaimport java.io.IOException;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import javax.xml.parsers.*;
import javax.xml.xpath.*;
public class XpathInjectionExample {
public boolean doLogin(String loginID, String password)
throws ParserConfigurationException, SAXException,IOException,
XPathExpressionException {
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse("users.xml");
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr = xpath.compile("//users/user[loginID/text()='"+loginID+"'
and password/text()='"+password+"' ]/firstname/text()");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
//print first names to the console
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println(nodes.item(i).getNodeValue());}
if (nodes.getLength() >= 1) {
return true;}
else
{return false;}
}
}对于 清单 6,如果您传入一个 login 和 password,比如 loginID = 'abc' 和 password = 'test123',则该类将返回 true(而且就本例而言,还会打印一列 first name 到控制台)。例如,如果您传入类似 ' or 1=1 or ''=' 的值,那么您也会得到 true 返回值,因为 XPath 会最终发现字符串变成了类似清单 7 的样子。
清单 7. 字符串//users/user[loginID/text()='' or 1=1 or ''='' and password/text()='' or 1=1 or ''='']这个字符串会在逻辑上使查询一直返回 true 并将一直允许攻击者访问系统。
另一种可能性更大而且可能更加麻烦的 XPath 攻击方式是,攻击者可以利用 XPath 在应用程序中动态地操作 XML 文档。
提取 XML 文档结构
用于绕过身份验证的查询还可以用于提取 XML 文档的信息。假设攻击者猜测 XML 文档中第一个子节点的名称是 loginID 并且想要确认一下。攻击者可以提供清单 8 所示的输入。
清单 8. 攻击者提供的输入abc' or name(//users/LoginID[1]) = 'LoginID' or 'a'='b 与 清单 7 中的 1=1 不同,清单 8 中给出的表达式检查第一个子节点的名称是否为 loginID。形成的查询如清单 9 所示。
清单 9. 查询String(//users[LoginID/text()='abc' or name(//users/LoginID[1]) =
'LoginID' or 'a=b' and password/text()='']) 用试凑法,攻击者可以检查 XML 文档的各个子节点并通过查看这个 XPath 表达式是否能促成成功的身份验证以收集信息。攻击者然后可能编写出一个简单的脚本,发送各种 XPath 注入并从系统中提取 XML 文档,如 Klein 的论文中提及的那样。
XPath 注入预防
因为 XPath 注入攻击与 SQL 注入攻击非常类似,所以很多预防方法也类似。这些预防方法中,多数也可以类似地应用于预防其他类型的代码注入攻击。
身份验证
不论面对何种应用程序、环境或语言,都应遵守以下的最佳实践:
假定所有输入都可疑。
不仅要验证数据的类型,还要验证其格式、长度、范围和内容(例如,一个简单的正则表达式 if (/^"*^';&<>()/) 就可以找出大多数可疑的特殊字符)。
在客户机和服务器上都要验证数据,因为客户机验证非常容易绕过。
根据安全软件开发的最佳实践,遵守一致的编写和 [missing word] 策略实现应用程序安全性(请参阅 参考资料 中 Apache 的优秀 Web 服务列表)。
在发布应用程序之前测试已知的威胁。参考资料 中的 “Fuzz Testing” 介绍了测试方法。
参数化
与多数数据库应用程序不同,XPath 不支持参数化查询的概念,但是您可以使用其他 API(比如 XQuery)模拟该概念。您不需要构建字符串表达式,然后传给 XPath 解析器以便在运行时动态执行(如清单 10 所示),而是通过创建保存查询的外部文件使查询参数化(如 清单 11 所示)。
清单 10. 传给 XPath 解析器的字符串"//users/user[LoginID/text()=' " + loginID+ " ' and password/text()='
"+ password +" ']" 在清单 11 中,通过创建保存查询的外部文件使查询参数化。
清单 11. dologin.xqdeclare variable $loginID as xs:string external;
declare variable $password as xs:string external;//users/user[@loginID=
$loginID and @password=$password]对 清单 11 稍加修改,也可以完成同样的功能,如清单 12 所示。
清单 12. XQuery 片段Document doc = new Builder().build("users.xml");
XQuery xquery = new XQueryFactory().createXQuery(new File("
dologin.xq"));
Map vars = new HashMap();
vars.put("loginid", "abc");
vars.put("password", "test123");
Nodes results = xquery.execute(doc, null, vars).toNodes();
for (int i=0; i < results.size(); i++) {
System.out.println(results.get(i).toXML());
}这样可以防止重要的显式变量 $loginID 和 $password 在运行时被作为可执行表达式处理。这样就分开了执行逻辑与数据;遗憾的是,查询参数化并不是 XPath 功能的一部分,但是可以从 SAXON 之类的开源解析器中免费获取(请参阅 参考资料 中的链接)。某些其他解析器支持这种功能,而且它可以作为防止 XPath 注入的一种可靠方式。
Web 服务器上的数据检查
要防止 XPath 注入和其他形式的代码注入,应该检查所有从 Web 服务器传到后端服务的数据。例如,对于 Apache 您可以使用 Mod_Security 筛选器(比如 SecFilterSelective THE_REQUEST "(\'|\")")查找字符串中的单引号和双引号并禁止它们。您也可以使用同样的方法筛选和禁止其他形式的特殊字符,比如 ("*^';&><</),这些字符都可以用于各种注入攻击。这种方法对于使用基于 REST 或 SOAP 的 XML 服务的应用程序可能很好,但是在其他情况下可能不适用。通常的最佳实践是,从最初的设计到应用程序实现都采用智能安全设计。
如果系统被破坏了怎么办?
大多数组织都考虑到了威胁检测和威胁拒绝,但很少为此作出规划,对于一名合格的安全专家,如果系统遭到破坏怎么办。您应该总是假定最坏的场景并作出规划。
这在很大程度上取决于组织和遭遇入侵的系统类型,但通常的最佳方法是,让系统脱机并等待专业的论证工程师检查系统。有时人们直接让系统脱机并重映像驱动器,但是这种做法消除了入侵的证据和入侵者可能给系统造成的其他损害的信息。如果可能的话,一直保留系统状态以待安全专家检查。
发表评论
-
lhgdialog 调整遮罩层样式
2013-01-10 11:46 1140#ldg_lockmask{ background:#DCE2 ... -
Java中HashMap的用法
2012-04-10 11:31 1089import java.util.Map; import ... -
Eclipse-jee-galileo的简单应用配置(包含Tomcat)
2012-03-23 17:43 1首先:下载 JDK 6,Eclip ... -
常用的WebServices
2012-02-15 11:12 1045天气预报Web Service,数据来源于中国气象局 En ... -
JDK官方下载
2011-11-27 22:54 854JDK1.6官方下载_JDK6官方下载地址:http:// ... -
DHTML在线参考手册
2011-10-11 17:31 0<p>一个不错的DHTML在线参考手册,收藏一下! ... -
DOCTYPE元素详解
2011-10-06 16:25 913一.概述 本文系统的讲解DOCTYPE元素.同时查 ... -
CSS层 固定置顶部兼容IE6等以上浏览器
2011-09-27 17:46 2066<!DOCTYPE html PUBLIC " ... -
table 设置高度为100%
2011-09-22 16:23 1278一般来说都是给table 加个style="heig ... -
Frameset框架优缺点
2011-08-24 13:55 3598HTML框架简述 一个 ... -
html 自动换行样式
2011-08-17 15:58 1057语法: word-break : normal | break ... -
DIV内图片与文字垂直居中
2011-08-13 11:34 904样式: <style> /* ti ... -
关于‘TOP’置顶链接
2011-08-11 17:42 1275方案一:在合适的地方,手动加入一个或多个‘TOP’链接。 ... -
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0声明的重要性
2011-06-01 15:32 1471在写一个显示的JS,弹出窗口,并固定在右下角,在FF下测试没问 ... -
火狐兼容性问题
2011-05-17 17:34 9491.DOCTYPE 影响 CSS 处理 2.FF: di ... -
兼容IE6,IE8,FireFox的开发体会
2011-04-19 12:29 8871、注意样式的次序,应该从上写到下 2、用到table 必须 ... -
CSS十八种小技巧
2011-04-12 14:17 714一、使用css缩写 使 ... -
Div垂直居中
2011-04-06 16:26 1112近来我尝试网上了很都多的办法。但都有缺陷。 以下跟大家分享下 ... -
网页栅格系统中的最佳宽度:960px
2011-04-01 10:51 1038网站 首页页面宽度 px Yahoo! 950 淘宝 95 ... -
十天学会DIV+CSS
2011-03-25 12:25 1046《十天学会web标准(DIV+CSS)》是本站出品的系列教程, ...
相关推荐
XCat是一个命令行程序,用于辅助XPath注入漏洞的利用。XCat使用Python编写并开放源代码。XCat正常使用需要python的SimpleXMLWriter模块。 标签:XPath
### Xpath注入攻击及其防御技术研究 #### 一、Xpath注入攻击概述 XPath是一种用于在XML文档中查找信息的语言,它提供了强大的功能来定位、提取数据。然而,这种强大的功能也使得XPath成为攻击者利用的目标之一。...
测试XPath注入 XPath 注入是指攻击者通过提交恶意的 XPath 查询来破坏应用程序的逻辑或获取未授权访问的数据的安全漏洞。XPath 是一种用于导航 XML 文档并从中获取数据的解释型语言。许多时候,一个 XPath 表达式...
XPath注入是一种针对XML数据的攻击方式,通过构造恶意的XPath表达式来欺骗应用程序,获取未经授权的数据或者执行非预期的操作。这种攻击通常发生在应用接受用户输入的XPath查询,并直接用于解析XML文档时。在这个名...
xxxpwn : XPath 过滤扩展工具 : 专为盲优化 XPath 1 注入攻击而设计 xxxpwn 使用各种 XPath 优化来查询来自存在 XPath 注入的位置提供的后端 XML 文档的自定义信息。 默认情况下,它会尝试检索整个远程数据库,尽管...
XPath注入攻击是一种针对使用XML(可扩展标记语言)作为数据交换格式的web服务和互联网应用的攻击方式。由于XML在数据管理、数据传输方面的广泛使用,它成为了黑客攻击的一个目标。黑客可以利用XPath注入技术操纵...
XCat是一个命令行工具,可以利用和调查XPath盲注漏洞。 有关完整的参考,请阅读此处的文档: : 它支持大量功能: 自动选择注射(运行xcat injections以获得列表) 检测xpath解析器的版本和功能,并选择最快的...
XPath(XML Path Language)是一种在XML文档中查找信息的语言,它是W3C组织制定的一种标准查询语言,用于选取XML文档中的节点,包括元素、属性、文本等。在本项目“Xpath生成器,自动生成XPATH,C#版”中,开发者...
XPath Helper是一款非常实用的工具,尤其对于Web开发者和数据抓取者来说,它极大地简化了在网页中查找和提取信息的过程。版本2.0.2是这个插件的一个更新,旨在提供更稳定、高效的功能。XPath(XML Path Language)是...
XPath,全称XML Path Language,是一种在XML文档中查找信息的语言。它被设计用来选取XML文档中的节点,包括元素、属性、文本等。XPath基于W3C标准,为XML处理提供了一种强大而灵活的方式。以下是对“XPath指南”中...
XPath,全称XML Path Language,是一种在XML文档中查找信息的语言。它被设计用来选取XML文档中的节点,如元素、属性、文本等。在IE浏览器下,为了方便开发者获取XML或HTML文档中的XPath路径,存在一种小工具,本文将...
XPath(XML Path Language)是一种在XML文档中查找信息的语言,它允许我们通过路径表达式来选取节点,比如元素、属性和文本等。XPath 2.0是XPath的第二个主要版本,增加了更多的功能和优化。 在没有XPath Helper的...
Xpath生成器,可以通过输入的文件,进行匹配,生成全部可用的Xpath,犹豫HTML中部分标签允许无结束,如:("LINK" ,"META","SCRIPT","IMG" ,"INPUT", "FORM")故已经被忽略,如有朋友发现其中有问题,请告诉我哦...
本压缩包文件"xpath-helper.crx"很可能是一个Chrome浏览器的扩展程序,旨在提供实时的XPath查询支持。 XPath(XML Path Language)是一种在XML文档中查找信息的语言,它允许我们通过路径表达式来选取节点,如元素、...
XPath,全称XML Path Language,是一种在XML文档中查找信息的语言。它被设计用来选取XML文档中的节点,包括元素、属性、文本等。XPath基于W3C标准,其1.0版本是XPath语言的基础,提供了强大的查询和导航功能。本教程...
4. **命名空间处理**:在处理包含命名空间的XML时,需正确处理命名空间前缀和声明,以避免选取错误的节点。 5. **函数和运算符**:熟练运用XPath提供的各种函数和运算符,如字符串处理、数值计算和逻辑判断。 使用...
此外,XPath插件还能够帮助开发者检查和验证所编写的XPath表达式的正确性,避免因路径错误导致的爬取失败。在实际项目中,面对结构复杂的网页,这种即时反馈的能力尤为宝贵。 总的来说,这个压缩包提供的火狐老版本...
XPathHelper 2.0.2 版本专注于XPath的查询与应用,特别适合于Web自动化测试和网页数据抓取。 XPath在Web开发中的主要用途有以下几点: 1. **元素定位**:XPath允许开发者通过路径表达式来选取XML或HTML文档中的...
Selenium xpath,
Jaxen 1.1.2稳定版意味着它已经过充分测试,适合在生产环境中使用,避免了可能的不稳定性和bug。 DOM4J是另一个与Jaxen密切相关的库,它是一个灵活的处理XML、DOM和SAX的Java库。DOM4J提供了丰富的API,使开发人员...