您现在的位置是:主页 > 数据库技术 > 数据库技术

SQL注入该如何理解

IDCBT2022-01-06服务器技术人已围观

简介SQL注入该如何理解,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 SQL是什么? 结构化查询语⾔(Structured

SQL注入该如何理解,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

SQL是什么?

结构化查询语⾔(Structured Query Language ,SQL),是⼀种特殊的编程语⾔,⽤于数据库的标准数据查询。1986 年10 ⽉美国国家标准协会对SQL 进⾏了规范后,以此作为关系型数据库系统的标准语⾔。1987 年得到了国际标准组织的⽀持,成为了国际标准。

什么是SQL注入

SQL注入是服务端未严格校验客户端发送的数据,而导致服务端SQL语句被恶意修改并成功执行的行为

漏洞原理

SQL 注⼊的攻击⾏为可以描述为通过⽤户可控参数中注⼊SQL 语法,破坏原有SQL 结构,达到编写程序时意料之外结果的攻击⾏为。其成因可以归结为以下两个原因叠加造成的。

    程序员在处理程序和数据库交互时,使⽤字符串拼接的⽅式构造SQL 语句

    未对⽤户可控参数进⾏⾜够的过滤,便将参数内容拼接到SQL 语句中

    漏洞原因

      用户能够控制输入

      是对于输入检查不充分,导致SQL语句将用户提交的非法数据当作语句的一部分来执行

      为什么会有SQL注入

        代码对带入SQL语句的参数过滤不严格

        未启用框架的安全配置,例如:PHP的magic_quotes_gpc

        未使用框架安全的查询方法

        测试接口没有删除

        未启用防火墙

        未使用其他的安全防护设备

        注⼊点可能存在的位置

        根据SQL 注⼊漏洞的原理,⽤户“可控参数”中注⼊SQL 与发,也就是说Web 应⽤获取⽤户输⼊的地⽅,只要带⼊数据库查询,都有存在SQL 注⼊的可能,这些地⽅通常包括:

          GET 数据

          POST 数据

          Cookie 数据

          HTTP 头部(HTTP 头部中的其他字段)

          漏洞危害

            数据库信息泄漏、获取、修改敏感数据:数据库中存放的用户的隐私信息(帐号、密码)的泄露

            绕过登录验证:使用万能密码登录网站后台等

            文件系统操作:列目录,读取、写入文件等

            网页篡改:通过操作数据库对特定网页进行篡改,嵌入网马链接,进行挂马攻击

            注册表操作:读取、写入、删除注册表等

            执行系统命令:远程执行命令

            服务器被远程控制、种植木马:黑客可以修改或控制操作系统

          提交方法

          提交方法有:get、post、cookie、request等
          其中:request支持度较好,你把参数以get方式、post方式、cookie方式提交都是可以的

          判断注入点

          会在疑似注⼊点的地⽅或者参数后⾯尝试提交数据,从而进⾏判断是否存在SQL 注⼊漏洞。

          测试数据测试判断

          标签:

          很赞哦! ()

本栏推荐