sql注入攻击的类型与防范

回顾:最近的一些安全事件及其后果,安全专家已经得出结论,这些威胁主要是SQL注入引起的,尽管许多文章讨论了SQL注入,今天讨论的内容也将帮助您检查服务器并采取相应的预防措施。




sql注入攻击的类型

你的当事人可以赢。首先,要清楚SQL注入攻击的类型。

1。没有正确地过滤转义字符。

当用户的输入没有为转义字符过滤时,这种类型的注入攻击将发生,并将它传递给SQL语句。这将导致应用程序的最终用户操作数据库上的语句:

语句:从用户名++用户名中选择*

此代码设计为从用户列表中指定的特定用户,但如果用户名是以特定方式伪造的恶意用户,则操作语句的执行可能不只是预期代码的作者:

a'or不=不,当原始报表的变化:

从users名称= 'a'or不=不;

如果在认证过程中使用此代码,则此示例可以强制合法用户名,因为赋值不总是正确的。

一些SQL服务器,如SQL Server、SQL命令可以通过这种方法注入,包括执行多个语句。用户名以下语句中的值将导致缺失;users表,也可以选择所有数据(data)和表。

a;下拉表用户;从名称为*的数据中选择

这将最后SQL语句转换为以下方式:

从users名称= a;表中删除用户;选择*

从名称如%的数据;

其他SQL执行不会在同一个查询中作为一个安全措施执行多个命令。这可以防止攻击者注入完全独立的查询,但不会阻止攻击者修改查询。

2、不正确的类型处理

如果用户提供的字段不是强类型,或者如果没有强制类型强制,则会出现这种类型的攻击。当SQL语句中使用数字字段时,如果程序员未能检查用户输入的有效性(是否是数字类型),则该攻击将发生:

声明:=SELECT * FROM数据id =+ a_variable +;

你可以看到这个声明,笔者想a_variable是对相关数;id领域。然而,如果用户选择一个字符串,它绕过转义字符的需要。例如,设置a_variable 1,删除表的用户,users,表从数据库中删除,SQL语句的选择:从数据的地方,ID = 1;

三.数据库服务器中的漏洞

有时,在数据库服务器软件也有漏洞,如mysql_real_escape_string()函数在MySQL服务器的漏洞,这个漏洞允许攻击者执行成功的SQL注入攻击基于错误的统一字符编码。

4。盲目SQL注入攻击

当一个Web应用程序容易受到攻击,其结果对攻击者是不可见的,所谓的盲目的SQL注入攻击的发生。一个脆弱的Web页可能不显示数据,但显示基于进入法律声明注入逻辑语句的结果不同的内容。这种攻击是非常耗时的,因为一个新的声明必须精心构造的字节得到。但一旦该漏洞的位置和目标位置信息的建立,一个工具叫苦艾酒可以自动攻击。

5。条件响应

注意,有一个SQL注入,它迫使数据库在普通应用程序屏幕上计算逻辑语句的值:

选择booktitle从书目,bookid = 'ook14cd'and 1 = 1

这将导致一个标准的表面和语句。

选择书目,bookid = 1 = 2 'ook14cd'and可能给出不同的结果时,页面很容易受到SQL注入攻击booktitle。这样一个单一的注射证明,盲目的SQL注入是可能的,这将使攻击者设计的话,可以根据另一个表中的字段的内容来判断。

6。条件误差

如果WHERE语句是真的,这种类型的盲目SQL注入将迫使数据库判断导致错误的语句,从而导致SQL错误:

选择1 / 0从用户的用户名= 'ralph。显然,如果用户拉尔夫的存在,将导致错误的归零。

7。时间延迟

延时是一种盲目的sql注入。根据注入的逻辑,它可以使SQL引擎执行长队列或延迟语句。攻击者可以测量页面加载的时间,以确定注入语句是否为真。

以上只是一个粗略的分类SQL攻击。但从技术上讲,今天的SQL注入攻击是更聪明、更全面的如何找到脆弱的网站,还有一些新的SQL攻击。黑客可以使用多种工具来加快漏洞的利用。我们采取在Asprox木马这种木马看,它主要传播通过直接邮件的僵尸网络,整个工作过程可以描述为:首先,通过发送垃圾邮件控制主机该木马安装在电脑上,然后,该木马感染的计算机下载二进制代码的开始,它将使用搜索引擎与微软的ASP技术构建搜索,在网站形式存在漏洞。搜索的结果成为他目标的SQL注入攻击列表。然后,特洛伊将推出这些网站的SQL注入攻击,控制和破坏下的一些网站。谁有权访问这些控制和破坏网站的用户将被从另一个网站下载一个恶意的Javascript代码。最后,这个代码,导致用户对第三网站,与更多的恶意软件,如木马,窃取密码。

在过去,我们经常警告或建议Web应用程序员测试和修补他们的代码,虽然SQL注入漏洞被发现和利用的概率不高。但近年来,越来越多的人发现和恶意利用这些漏洞。因此,部署软件之前,开发商应该测试代码更积极和补丁代码后立即出现新的漏洞。

sql注入的防御与检查

1。使用参数化筛选器语句

防止SQL注入,用户的输入不能直接嵌入的SQL语句。相反,用户的输入必须经过过滤,或参数化语句使用参数化语句中使用的参数,而不是将用户输入的语句。在大多数情况下,SQL语句的修正。然后,用户输入是有限的一个参数。下面是一个例子,使用java和jdbc api:

PreparedStatement准备= conn.preparestatement(从users

密码;

prep.setstring(1,PWD);

一般来说,有两种方法可以确保应用程序不易受SQL注入的攻击。首先,使用代码审查,两个被迫使用参数化语句。强制使用参数化语句意味着用户嵌入的SQL语句在运行时将被拒绝。然而,目前对这个特性的支持并不多。例如,支持H2数据库引擎。

2。避免使用口译员,因为这是黑客执行非法命令的手段。

三.防止SQL注入,避免一些详细的错误消息,因为黑客可以利用这些消息。一个标准的输入验证机制用于验证所有输入数据的长度、类型、语句、企业规则等。

4。使用专业的漏洞扫描工具,但这不足以防御SQL注入攻击,攻击者可以自动寻找目标并进行攻击,其技术甚至可以很容易地应用到其他的漏洞在Web架构。企业应当投资于一些专业的漏洞扫描工具,如著名的Acunetix网络漏洞扫描程序,等一个完美的漏洞扫描程序不同于网络扫描程序,专门寻找SQL注入漏洞的网站。最新的漏洞扫描程序可以查找最新发现的漏洞。

5。最后,企业必须执行代码安全检查在Web应用的开发过程的所有阶段。首先,实施安全检查部署Web应用程序之前,这项措施是不是更有意义和深远的,企业还应与漏洞扫描工具和网站后部署工具监控测试网站。

网络安全警钟已经敲响,安全形势极为严峻,企业应该从不敷衍。安全重于泰山!