编码员征服安全。分享与学习系列 - XML注入
XML注入攻击是黑客发明的讨厌的小漏洞,以帮助他们破坏托管XML数据库的系统。这包括人们在想到传统数据库时想到的那种东西--从药品到电影的详细信息存储。一些XML数据库也被用来检查授权用户,因此向它们注入新的XML代码可以创建新的用户,主机系统将从这一点上接受这些用户。
对于攻击者来说,要实现XML注入,需要有一个依赖XML数据库的应用程序,或者至少要访问这个数据库。每当这时,如果用户的输入没有经过适当的审查,新的XML代码就会被添加到数据存储中。根据攻击者的技能,添加新的XML代码可以造成相当大的破坏,甚至可以提供对整个数据库的访问。
当你继续阅读时,你可能会发现,XML注入与我们之前介绍的SQL注入攻击密切相关。这是因为即使它们针对的是不同类型的数据库,它们也是极其相似的。值得庆幸的是,修复方法也是类似的。学习如何击败一种类型的攻击将使你在防止另一种类型的攻击时处于领先地位。
在这一集里,我们将学习。
- XML注入是如何工作的
- 为什么它们如此危险
- 你如何能将防御措施落实到位,以彻底阻止它们。
攻击者是如何触发XML注入的?
只要未经授权的用户能够编写XML代码并将其插入到现有的XML数据库中,XML注入就会成功。这只需要两点:一个依赖或连接到XML数据库的应用程序和一个不安全的数据通道,以便攻击者发起攻击。
如果用户输入的信息在被发送到服务器处理之前没有经过消毒或其他限制,XML注入几乎总是成功的。这可以让攻击者在正常查询字符串的末尾编写自己的代码,或者注入代码。如果成功的话,这将欺骗服务器执行XML代码,允许它添加或删除记录,甚至揭示整个数据库。
黑客通过在正常查询中添加XML代码来实现XML注入攻击。这可以是任何东西,从一个搜索字段到一个登录页面。它甚至可能包括像cookies或头文件这样的东西。
例如,在一个注册表格中,用户可能会在用户名或密码字段后添加以下代码。
<user></user>
<role>administrator</role>
<username>John_Smith</username><password>Jump783!Tango@12</password>
在这个例子中,一个名为John_Smith的新用户将被创建,具有管理员权限。至少这个新用户采用了良好的密码密度规则。太糟糕了,他们实际上是一个攻击者。
黑客不一定需要总是打出这样的全垒打才能在XML注入方面取得成功。通过操纵他们的查询和记录服务器返回的各种错误信息,他们可能能够摸清XML数据库的结构。而这些信息可以被用来加强其他类型的攻击。
为什么XML注射剂如此危险?
XML注入攻击所涉及的危险程度取决于目标XML数据库中存储了什么信息,或者这些信息是如何被使用的。例如,在XML数据库被用来验证用户的情况下,XML注入可以让攻击者进入系统。它甚至可能让他们成为目标网络的管理员,这当然是一种极其危险的情况。
对于针对更传统的数据库的XML注入,危险在于信息被窃取,有不正确的数据被添加到存储中,或者可能有好的数据被覆盖。XML代码并不难学,而且一些命令可以非常强大,可以覆盖整个信息字段,甚至显示数据存储的内容。
一般来说,没有人建立数据库,除非存储的信息有价值。黑客们知道这一点,这就是为什么他们经常以数据库为目标。如果这些数据包括诸如员工或客户的个人信息,那么这些信息被泄露可能导致声誉损失、财务后果、巨额罚款甚至诉讼。
阻止XML注入攻击
XML注入是相当常见的,因为它的难度很低,而且XML数据库也很普遍。但这些攻击已经存在了很长时间。因此,有几个铁定的修复方法可以防止它们的执行。
阻止攻击的最佳方法之一是设计一个只使用预编译的XML查询的应用程序。这就把查询的功能限制在一个授权的活动子集上。任何带有额外参数或不符合预编译查询功能的命令都不会被执行。如果你不想这么严格,你也可以使用参数化。这将用户的输入限制在特定类型的查询和数据上,例如只使用整数。任何超出这些参数的内容都被认为是无效的,并迫使查询失败。
将预编译或参数化的查询与定制的错误信息配对也是一个好主意。与其从失败的查询中发回默认的、描述性的错误信息,应用程序应该拦截这些响应,并用一个更通用的信息来取代它们。理想情况下,你想告诉用户为什么查询失败,但不给他们任何关于数据库本身的信息。如果你把这些自定义信息限制在几个选择上,黑客将无法从失败的查询中编制出任何有用的侦察信息。
XML注入在刚开发出来时是非常成功的。但考虑到那是多长时间以前的事了,今天我们可以很容易地构建起不再被攻破的防御系统。
关于XML注射液的更多信息
要进一步阅读,你可以看一下OWASP关于XML注入的文章。你还可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊的信息,请访问Secure Code Warrior 博客。
Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。
Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。
预定一个演示Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。
XML注入攻击是黑客发明的讨厌的小漏洞,以帮助他们破坏托管XML数据库的系统。这包括人们在想到传统数据库时想到的那种东西--从药品到电影的详细信息存储。一些XML数据库也被用来检查授权用户,因此向它们注入新的XML代码可以创建新的用户,主机系统将从这一点上接受这些用户。
对于攻击者来说,要实现XML注入,需要有一个依赖XML数据库的应用程序,或者至少要访问这个数据库。每当这时,如果用户的输入没有经过适当的审查,新的XML代码就会被添加到数据存储中。根据攻击者的技能,添加新的XML代码可以造成相当大的破坏,甚至可以提供对整个数据库的访问。
当你继续阅读时,你可能会发现,XML注入与我们之前介绍的SQL注入攻击密切相关。这是因为即使它们针对的是不同类型的数据库,它们也是极其相似的。值得庆幸的是,修复方法也是类似的。学习如何击败一种类型的攻击将使你在防止另一种类型的攻击时处于领先地位。
在这一集里,我们将学习。
- XML注入是如何工作的
- 为什么它们如此危险
- 你如何能将防御措施落实到位,以彻底阻止它们。
攻击者是如何触发XML注入的?
只要未经授权的用户能够编写XML代码并将其插入到现有的XML数据库中,XML注入就会成功。这只需要两点:一个依赖或连接到XML数据库的应用程序和一个不安全的数据通道,以便攻击者发起攻击。
如果用户输入的信息在被发送到服务器处理之前没有经过消毒或其他限制,XML注入几乎总是成功的。这可以让攻击者在正常查询字符串的末尾编写自己的代码,或者注入代码。如果成功的话,这将欺骗服务器执行XML代码,允许它添加或删除记录,甚至揭示整个数据库。
黑客通过在正常查询中添加XML代码来实现XML注入攻击。这可以是任何东西,从一个搜索字段到一个登录页面。它甚至可能包括像cookies或头文件这样的东西。
例如,在一个注册表格中,用户可能会在用户名或密码字段后添加以下代码。
<user></user>
<role>administrator</role>
<username>John_Smith</username><password>Jump783!Tango@12</password>
在这个例子中,一个名为John_Smith的新用户将被创建,具有管理员权限。至少这个新用户采用了良好的密码密度规则。太糟糕了,他们实际上是一个攻击者。
黑客不一定需要总是打出这样的全垒打才能在XML注入方面取得成功。通过操纵他们的查询和记录服务器返回的各种错误信息,他们可能能够摸清XML数据库的结构。而这些信息可以被用来加强其他类型的攻击。
为什么XML注射剂如此危险?
XML注入攻击所涉及的危险程度取决于目标XML数据库中存储了什么信息,或者这些信息是如何被使用的。例如,在XML数据库被用来验证用户的情况下,XML注入可以让攻击者进入系统。它甚至可能让他们成为目标网络的管理员,这当然是一种极其危险的情况。
对于针对更传统的数据库的XML注入,危险在于信息被窃取,有不正确的数据被添加到存储中,或者可能有好的数据被覆盖。XML代码并不难学,而且一些命令可以非常强大,可以覆盖整个信息字段,甚至显示数据存储的内容。
一般来说,没有人建立数据库,除非存储的信息有价值。黑客们知道这一点,这就是为什么他们经常以数据库为目标。如果这些数据包括诸如员工或客户的个人信息,那么这些信息被泄露可能导致声誉损失、财务后果、巨额罚款甚至诉讼。
阻止XML注入攻击
XML注入是相当常见的,因为它的难度很低,而且XML数据库也很普遍。但这些攻击已经存在了很长时间。因此,有几个铁定的修复方法可以防止它们的执行。
阻止攻击的最佳方法之一是设计一个只使用预编译的XML查询的应用程序。这就把查询的功能限制在一个授权的活动子集上。任何带有额外参数或不符合预编译查询功能的命令都不会被执行。如果你不想这么严格,你也可以使用参数化。这将用户的输入限制在特定类型的查询和数据上,例如只使用整数。任何超出这些参数的内容都被认为是无效的,并迫使查询失败。
将预编译或参数化的查询与定制的错误信息配对也是一个好主意。与其从失败的查询中发回默认的、描述性的错误信息,应用程序应该拦截这些响应,并用一个更通用的信息来取代它们。理想情况下,你想告诉用户为什么查询失败,但不给他们任何关于数据库本身的信息。如果你把这些自定义信息限制在几个选择上,黑客将无法从失败的查询中编制出任何有用的侦察信息。
XML注入在刚开发出来时是非常成功的。但考虑到那是多长时间以前的事了,今天我们可以很容易地构建起不再被攻破的防御系统。
关于XML注射液的更多信息
要进一步阅读,你可以看一下OWASP关于XML注入的文章。你还可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊的信息,请访问Secure Code Warrior 博客。
XML注入攻击是黑客发明的讨厌的小漏洞,以帮助他们破坏托管XML数据库的系统。这包括人们在想到传统数据库时想到的那种东西--从药品到电影的详细信息存储。一些XML数据库也被用来检查授权用户,因此向它们注入新的XML代码可以创建新的用户,主机系统将从这一点上接受这些用户。
对于攻击者来说,要实现XML注入,需要有一个依赖XML数据库的应用程序,或者至少要访问这个数据库。每当这时,如果用户的输入没有经过适当的审查,新的XML代码就会被添加到数据存储中。根据攻击者的技能,添加新的XML代码可以造成相当大的破坏,甚至可以提供对整个数据库的访问。
当你继续阅读时,你可能会发现,XML注入与我们之前介绍的SQL注入攻击密切相关。这是因为即使它们针对的是不同类型的数据库,它们也是极其相似的。值得庆幸的是,修复方法也是类似的。学习如何击败一种类型的攻击将使你在防止另一种类型的攻击时处于领先地位。
在这一集里,我们将学习。
- XML注入是如何工作的
- 为什么它们如此危险
- 你如何能将防御措施落实到位,以彻底阻止它们。
攻击者是如何触发XML注入的?
只要未经授权的用户能够编写XML代码并将其插入到现有的XML数据库中,XML注入就会成功。这只需要两点:一个依赖或连接到XML数据库的应用程序和一个不安全的数据通道,以便攻击者发起攻击。
如果用户输入的信息在被发送到服务器处理之前没有经过消毒或其他限制,XML注入几乎总是成功的。这可以让攻击者在正常查询字符串的末尾编写自己的代码,或者注入代码。如果成功的话,这将欺骗服务器执行XML代码,允许它添加或删除记录,甚至揭示整个数据库。
黑客通过在正常查询中添加XML代码来实现XML注入攻击。这可以是任何东西,从一个搜索字段到一个登录页面。它甚至可能包括像cookies或头文件这样的东西。
例如,在一个注册表格中,用户可能会在用户名或密码字段后添加以下代码。
<user></user>
<role>administrator</role>
<username>John_Smith</username><password>Jump783!Tango@12</password>
在这个例子中,一个名为John_Smith的新用户将被创建,具有管理员权限。至少这个新用户采用了良好的密码密度规则。太糟糕了,他们实际上是一个攻击者。
黑客不一定需要总是打出这样的全垒打才能在XML注入方面取得成功。通过操纵他们的查询和记录服务器返回的各种错误信息,他们可能能够摸清XML数据库的结构。而这些信息可以被用来加强其他类型的攻击。
为什么XML注射剂如此危险?
XML注入攻击所涉及的危险程度取决于目标XML数据库中存储了什么信息,或者这些信息是如何被使用的。例如,在XML数据库被用来验证用户的情况下,XML注入可以让攻击者进入系统。它甚至可能让他们成为目标网络的管理员,这当然是一种极其危险的情况。
对于针对更传统的数据库的XML注入,危险在于信息被窃取,有不正确的数据被添加到存储中,或者可能有好的数据被覆盖。XML代码并不难学,而且一些命令可以非常强大,可以覆盖整个信息字段,甚至显示数据存储的内容。
一般来说,没有人建立数据库,除非存储的信息有价值。黑客们知道这一点,这就是为什么他们经常以数据库为目标。如果这些数据包括诸如员工或客户的个人信息,那么这些信息被泄露可能导致声誉损失、财务后果、巨额罚款甚至诉讼。
阻止XML注入攻击
XML注入是相当常见的,因为它的难度很低,而且XML数据库也很普遍。但这些攻击已经存在了很长时间。因此,有几个铁定的修复方法可以防止它们的执行。
阻止攻击的最佳方法之一是设计一个只使用预编译的XML查询的应用程序。这就把查询的功能限制在一个授权的活动子集上。任何带有额外参数或不符合预编译查询功能的命令都不会被执行。如果你不想这么严格,你也可以使用参数化。这将用户的输入限制在特定类型的查询和数据上,例如只使用整数。任何超出这些参数的内容都被认为是无效的,并迫使查询失败。
将预编译或参数化的查询与定制的错误信息配对也是一个好主意。与其从失败的查询中发回默认的、描述性的错误信息,应用程序应该拦截这些响应,并用一个更通用的信息来取代它们。理想情况下,你想告诉用户为什么查询失败,但不给他们任何关于数据库本身的信息。如果你把这些自定义信息限制在几个选择上,黑客将无法从失败的查询中编制出任何有用的侦察信息。
XML注入在刚开发出来时是非常成功的。但考虑到那是多长时间以前的事了,今天我们可以很容易地构建起不再被攻破的防御系统。
关于XML注射液的更多信息
要进一步阅读,你可以看一下OWASP关于XML注入的文章。你还可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊的信息,请访问Secure Code Warrior 博客。
XML注入攻击是黑客发明的讨厌的小漏洞,以帮助他们破坏托管XML数据库的系统。这包括人们在想到传统数据库时想到的那种东西--从药品到电影的详细信息存储。一些XML数据库也被用来检查授权用户,因此向它们注入新的XML代码可以创建新的用户,主机系统将从这一点上接受这些用户。
对于攻击者来说,要实现XML注入,需要有一个依赖XML数据库的应用程序,或者至少要访问这个数据库。每当这时,如果用户的输入没有经过适当的审查,新的XML代码就会被添加到数据存储中。根据攻击者的技能,添加新的XML代码可以造成相当大的破坏,甚至可以提供对整个数据库的访问。
当你继续阅读时,你可能会发现,XML注入与我们之前介绍的SQL注入攻击密切相关。这是因为即使它们针对的是不同类型的数据库,它们也是极其相似的。值得庆幸的是,修复方法也是类似的。学习如何击败一种类型的攻击将使你在防止另一种类型的攻击时处于领先地位。
在这一集里,我们将学习。
- XML注入是如何工作的
- 为什么它们如此危险
- 你如何能将防御措施落实到位,以彻底阻止它们。
攻击者是如何触发XML注入的?
只要未经授权的用户能够编写XML代码并将其插入到现有的XML数据库中,XML注入就会成功。这只需要两点:一个依赖或连接到XML数据库的应用程序和一个不安全的数据通道,以便攻击者发起攻击。
如果用户输入的信息在被发送到服务器处理之前没有经过消毒或其他限制,XML注入几乎总是成功的。这可以让攻击者在正常查询字符串的末尾编写自己的代码,或者注入代码。如果成功的话,这将欺骗服务器执行XML代码,允许它添加或删除记录,甚至揭示整个数据库。
黑客通过在正常查询中添加XML代码来实现XML注入攻击。这可以是任何东西,从一个搜索字段到一个登录页面。它甚至可能包括像cookies或头文件这样的东西。
例如,在一个注册表格中,用户可能会在用户名或密码字段后添加以下代码。
<user></user>
<role>administrator</role>
<username>John_Smith</username><password>Jump783!Tango@12</password>
在这个例子中,一个名为John_Smith的新用户将被创建,具有管理员权限。至少这个新用户采用了良好的密码密度规则。太糟糕了,他们实际上是一个攻击者。
黑客不一定需要总是打出这样的全垒打才能在XML注入方面取得成功。通过操纵他们的查询和记录服务器返回的各种错误信息,他们可能能够摸清XML数据库的结构。而这些信息可以被用来加强其他类型的攻击。
为什么XML注射剂如此危险?
XML注入攻击所涉及的危险程度取决于目标XML数据库中存储了什么信息,或者这些信息是如何被使用的。例如,在XML数据库被用来验证用户的情况下,XML注入可以让攻击者进入系统。它甚至可能让他们成为目标网络的管理员,这当然是一种极其危险的情况。
对于针对更传统的数据库的XML注入,危险在于信息被窃取,有不正确的数据被添加到存储中,或者可能有好的数据被覆盖。XML代码并不难学,而且一些命令可以非常强大,可以覆盖整个信息字段,甚至显示数据存储的内容。
一般来说,没有人建立数据库,除非存储的信息有价值。黑客们知道这一点,这就是为什么他们经常以数据库为目标。如果这些数据包括诸如员工或客户的个人信息,那么这些信息被泄露可能导致声誉损失、财务后果、巨额罚款甚至诉讼。
阻止XML注入攻击
XML注入是相当常见的,因为它的难度很低,而且XML数据库也很普遍。但这些攻击已经存在了很长时间。因此,有几个铁定的修复方法可以防止它们的执行。
阻止攻击的最佳方法之一是设计一个只使用预编译的XML查询的应用程序。这就把查询的功能限制在一个授权的活动子集上。任何带有额外参数或不符合预编译查询功能的命令都不会被执行。如果你不想这么严格,你也可以使用参数化。这将用户的输入限制在特定类型的查询和数据上,例如只使用整数。任何超出这些参数的内容都被认为是无效的,并迫使查询失败。
将预编译或参数化的查询与定制的错误信息配对也是一个好主意。与其从失败的查询中发回默认的、描述性的错误信息,应用程序应该拦截这些响应,并用一个更通用的信息来取代它们。理想情况下,你想告诉用户为什么查询失败,但不给他们任何关于数据库本身的信息。如果你把这些自定义信息限制在几个选择上,黑客将无法从失败的查询中编制出任何有用的侦察信息。
XML注入在刚开发出来时是非常成功的。但考虑到那是多长时间以前的事了,今天我们可以很容易地构建起不再被攻破的防御系统。
关于XML注射液的更多信息
要进一步阅读,你可以看一下OWASP关于XML注入的文章。你还可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊的信息,请访问Secure Code Warrior 博客。