现在的位置: 首页 > 综合 > 正文

SQL注入

2014年01月25日 ⁄ 综合 ⁄ 共 857字 ⁄ 字号 评论关闭

SQL注入的攻击原理

       所谓SQL注入,就是用户输入中注入一些额外的特殊符号或SQL语句,使整个系统构造出来的SQL语句在执行时或者改变了查询条件,或者附带执行了攻击者注入的整个SQL语句,从而让攻击者达到了非法目的。理论上说,对于所有基于SQL语言标准的数据库软件都是有效的,包括MSSQL Server、Oracle、DB2、Sybase、MySQL等。它的产生主要是由于程序对用户输入的数据没有进行细致的过滤,导致非法数据的导入查询。

SQL注入的方法

1 没有正确或不严格过滤转义字符。在用户的输入没有转义字符过滤时,就会发生这种形式的注入式攻击,他会被传递给一个SQL语句。这样就会导致应用程序的终端用户对数据库上的语句实施操作。比如说,下面的这段代码就会演示这种漏洞:

 Select *from Users where Name = '" + userName +"'

         这种代码的设计目的是讲一个特定的用户从数据表中取出来,但是如果用户名被一个恶意的用户用一种特定的方式伪造,这个语句所执行的操作可能就不仅仅是代码的作者做期望的那样了。例如将用户名变量(username)设置为:

         A or 't' = 't  , 此时原始语句发生了变化:

         Select *from Users where Name ='a' or 't' = 't'

         如果这段代码用于认证过程,那么这个例子就能强迫选择一个合法的用户,因为赋值't' = 't'永远是正确的。

         2 类型不正确的处理。 如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。3 数据库服务器中的漏洞。4 盲目SQL注入式攻击。5 条件响应

        应该怎样防范SQL注入呢?

       1 实用参数化的过滤性语句。要防御SQL注入,用户的输入必须进行过滤,或者实用参数化的语句。2 输入验证。检查用户输入的合法性,确信输入的内容之包含合法的数据。3加密处理。将用户登录名称、密码等数据加密保护。4 确保数据库安全

抱歉!评论已关闭.