SQL注入攻击

来源:互联网 发布:手机购物软件大全 编辑:程序博客网 时间:2024/06/03 19:00

         SQL攻击(SQLinjection,中国大陆称作SQL注入攻击,台湾称作SQL资料隐码攻击),简称注入攻击,是发生于应用程序之数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏。

        原理

        SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

        分类

        平台层注入。由不安全的数据库配置或数据库平台的漏洞所致

        代码层注入。主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。

        SQL注入的产生原因

       ①不当的类型处理

       ②不安全的数据库配置

       ③不合理的查询集处理

       ④不当的错误处理

       ⑤转义字符处理不合适

       ⑥多个提交处理不当。

       攻击 

       当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。sql注入可能导致攻击者使用应用程序登陆在数据库中执行命令。相关的SQL注入可以通过测试工具pangolin进行。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。在某些表单中,用户输入的内容直接用来构造动态sql命令,或者作为存储过程的输入参数,这些表单特别容易受到sql注入的攻击。而许多网站程序在编写时,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,使应用程序存在安全隐患。这样,用户就可以提交一段数据库查询的代码,根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是sql注入就发生了。

       影响

       1、数据表中的数据外泄,例如个人机密数据,账户数据,密码等。

       2、数据结构被黑客探知,得以做进一步攻击(例如SELECT* FROM sys.tables)。

       3、数据库服务器被攻击,系统管理员账户被窜改(例如ALTERLOGIN sa WITH PASSWORD='xxxxxx')。

       4、取得系统较高权限后,有可能得以在网页加入恶意链接以及XSS。

       5、经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统(例如xp_cmdshell"net stop iisadmin"可停止服务器的IIS服务)。

       6、破坏硬盘数据,瘫痪全系统(例如xp_cmdshell"FORMAT C:")。       

       防护

       1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和

双"-"进行转换等。

       2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。

       3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

       4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。

       5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装

       6.sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。MDCSOFTSCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。

1 0
原创粉丝点击