美文网首页
SQL注入简介

SQL注入简介

作者: 拿破仑蛋糕 | 来源:发表于2018-07-25 18:59 被阅读0次

    https://baike.baidu.com/item/sql%E6%B3%A8%E5%85%A5/150289

    一.什么是SQL注入

    SQL注入:是一种将SQL代码添加到参数中,传入SQL服务器解析并执行的一种攻击手法。

    二. SQL注入的产生原因

    1. 对前端的输入参数没有进行过滤
    2. SQL服务器没有做相应的安全配置

    三.如何寻找SQL漏洞

    1. 找到web页面中的了输入点,有三部分可检查:get数据、post数据、http头信息(用户的一些个人信息,如Agent、referer,cookie等)。
    2. 找到哪些请求可触发异常情况。

    总结:寻找SQL漏洞的过程,就是找到可以进入到SQL服务器,并执行代码的过程。

    四.如何进行SQL攻击

    1. 数字攻击
      在SQL语句中,查询条件包含数字,该情况下,就可以构造SQL代码进行攻击。
    例如:
    正常SQL语句:SELECT * FROM myTable WHERE id = 1 
    攻击SQL语句:SELECT * FROM myTable WHERE id = -1 OR 1=1
    

    如上所示,让id等于一个不存在的值,但是后面拼接一个永远成立的值,即输入的参数为"-1 OR 1=1",那么这条语句就可以正确的执行,并且获取myTable表中的所有数据。

    1. 字符串攻击
      原理跟数字攻击类似,同样是构造SQL代码到服务器中执行,但是字符串攻击主要是利用"代码注释"的特性,在SQL代码中用于注释的符号有:"#"、"--"
    正常SQL语句:SELECT * FROM myTable WHERE name = 'a' AND  pwd = '123' 
    攻击SQL语句:SELECT * FROM myTable WHERE name = 'a'# AND pwd = '123' 
    

    此时,攻击语句执行的时候,传递的参数为 " a'# "(注意 a 后面的 ' 符号,这是闭合SQL语句的关键),pwd的值无所谓了(因为已经被当做注释,不执行了),这样就可以不通过pwd信息就能查到name = a 的相关信息

    五.如何防止SQL注入
    1. 对用户的输入和提交信息做严格的验证,验证包括:类型验证、格式验证、特殊字符处理等,可以说是"永远不要相信用户的输入"
    2. 不要使用动态拼装sql语句
    3. 不要使用管理员权限数据库

    说明:此文仅仅起到一个“抛砖引玉”的作用,要想了解更多,请自行深入学习。

    相关文章

      网友评论

          本文标题:SQL注入简介

          本文链接:https://www.haomeiwen.com/subject/cqsixftx.html