所谓SQL注入,就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

具体来说,它是利用现有应有程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在web

表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。

SQL注入攻击的总体思路

1.寻找到SQL注入的位置

2.判断服务器类型和后台数据库类型

3.针对不同的服务器和数据库特点进行SQL注入攻击

SQL注入攻击实例

比如在一个登录界面,要求输入用户名和密码:可以这样输入实现免帐号登录:用户名: ‘or 1 = 1 –-密 码:点登陆,如若没有做特殊处理,那么这个非法用户就很得意的登陆进去了.(当然现在的有些语言的数据库API已经处理了这些问题)这是为什么呢? 下面我们分析一下:从理论上说,后台认证程序中会有如下的SQL语句:String sql = "select * from user_table where username=' "+userName+" ' and password=' "+password+" '";当输入了上面的用户名和密码,上面的SQL语句变成:SELECT * FROM user_table WHERE username='’or 1 = 1 -- and password='’分析SQL语句:条件后面username=”or 1=1 用户名等于 ” 或1=1 那么这个条件一定会成功;然后后面加两个-,这意味着注释,它将后面的语句注释,让他们不起作用,这样语句永远都能正确执行,用户轻易骗过系统,获取合法身份。这还是比较温柔的,如果是执行SELECT * FROM user_table WHEREusername='' ;DROP DATABASE (DB Name) --' and password=''….其后果可想而知…

应对方法

1、参数化SQL:在设计与数据库连接并访问数据时,在需要填入数值或者数据的地方,使用参数(Parameter)来给值,用@来表示参数。在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部分来处理,而是在数据库完成SQL指令的编译后,才套用参数运行,因此就算参数中含有恶意的指令,由于已经编译完成,就不会被数据库所运行,因此,可从一定程度上避免SQL注入。

2、字符串过滤

3、使用正则表达式过滤传入的参数

4、前端js防范SQL注入

5、在数据库中限制用户权限,drop/create/truncate等权限谨慎grant

6、多使用数据库自带的安全参数。如在SQLServer数据库中提供了Parameter这个集合,这个集合提供类型检查和长度验证的功能。如果管理员采用了 Parameter这个集合的话,则用户输入的内容将被视为字符值而不是可执行代码。即使用户输入的内容中含有可执行代码,则数据库也会过滤掉。因为此时数据库只把它当作普通的字符来处理。

7、多层环境如何防治SQL注入式攻击?(实现多层验证,需要多层一起努力,在哭护短与数据库端都要采用相应的措施来防治SQL语句的注入式攻击)

8、必要情况下使用专业的漏洞扫描工具来寻找可能被攻击的点

防止SQL注入攻击-学习笔记相关推荐

  1. 基于pikachu漏洞平台的 --SQL注入攻击学习与总结

    SQL注入攻击 基础知识 常见注释符号 使用示例 pikachu 漏洞联系平台 -- SQL注入 SQL注入攻击流程 注入点类型 数字型注入(POST) 字符型注入(GET) 搜索型注入 XX型注入 ...

  2. ASP.NET 4学习笔记(1) SQL注入攻击及解决方案.

    一, 定义:所谓SQL注入攻击是应用程序开发人员未预期地把SQL代码传入到应用程序的过程,只有那些直接使用用户提供的值构造SQL语句的应用程序才会受影响. 例如原SQL代码为: select Orde ...

  3. SQL注入攻击及防御 手动注入+sqlmap自动化注入实战(网络安全学习12)

    CONTENTS 1 项目实验环境 2 SQL注入概述 2.1 SQL注入简介 2.2 SQL注入的危害 3 SQL基础回顾 3.1 联合查询union 3.2 information_schema数 ...

  4. ADO.NET笔记——带参数的查询防止SQL注入攻击

    相关知识: 把单引号替换成两个单引号,虽然能起到一定的防止SQL注入攻击的作用,但是更为有效的办法是把要拼接的内容做成"参数" SQLCommand支持带参数的查询,也就是说,可以 ...

  5. mysql注入攻击实_三十三、MySQL基础系列笔记之MySQL安全问题与SQL注入攻击

    SQL注入攻击大多数与程序有关系,程序不严谨是导致SQL注入攻击成功的一个原因.安全问题不容忽视,平常的开发中应关注安全问题.下面简单记录PHP中的SQL攻击问题. 什么是SQL注入攻击 SQL注入( ...

  6. 渗透测试笔记(三)——SQL注入攻击及防御(1)

    SQL注入危害 程序没有细致的过滤用户输入的数据,致使非法数据侵入系统. 1.对于Web应用程序而言,用户核心数据存储在数据库中,例如MySQL.SQL Server.Oracle等: 2.通过SQL ...

  7. Java程序员从笨鸟到菜鸟之(一百)sql注入攻击详解(一)sql注入原理详解

    前段时间,在很多博客和微博中暴漏出了12306铁道部网站的一些漏洞,作为这么大的一个项目,要说有漏洞也不是没可能,但其漏洞确是一些菜鸟级程序员才会犯的错误.其实sql注入漏洞就是一个.作为一个菜鸟小程 ...

  8. 2017-2018-2 20179216 《网络攻防与实践》 SQL注入攻击

    1. SQL语言 结构化查询语言(Structured Query Language)简称SQL:是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系 ...

  9. 如何有效防止SQL注入攻击

    SQL注入攻击是黑客对数据库进行攻击常用的手段之一,随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验参差不齐,相当大一部分程序员在编写代码的时候,没 ...

最新文章

  1. 计算机组成原理小论文参考文献,急!···跪求.《计算机组成原理》--论文--一篇...
  2. 每日一皮:资深程序员调试代码的样子...
  3. 设计模式总结 (1)模式分类
  4. SpringBoot2.0 基础案例(04):定时任务和异步任务的使用方式
  5. Android文本框实现搜索和清空效果
  6. (zt)Flash与C++交互
  7. python ax.imshow_python – Matplotlib imshow / matshow在情节上显...
  8. O-RAN:致力于ICDT融合,打造开放与智能的无线接入网
  9. 游戏中基于物理的渲染(一)
  10. FPGA实现“打字机”(VGA UART)
  11. 计算机excel无法打开,双击Excel软件无法打开表格文件怎么办?
  12. javassist教程
  13. PostgreSQL 配置优化
  14. Spark Container killed by YARN for exceeding memory limits. 11.1 GB of 11 GB physical memory used
  15. 国产国脑与腾讯会议配合挺默契
  16. 如何实现微信内域名防封,微信域名防封跳转
  17. 原码,反码,补码是什么?
  18. python报错:SyntaxError: Missing parentheses in call to ‘exec‘
  19. VUE打印 每页顶部添加一个二维码
  20. 编译原理第八章-符号表

热门文章

  1. 从SPACE矩阵,看5G究竟是否在走向成功?
  2. 计算机二级命名错误是不是不会变绿,计算机文管二级试题.doc
  3. notification源码分析_antd源码解读(10)- notification
  4. 背了黑锅以后,我找到了二师兄帮忙...
  5. 0.1+0.2不等于0.3,微信小程序云开发如何解决JavaScript小数计算精度失准的问题
  6. KubeVela 1.1 发布,开启混合环境应用交付新里程碑
  7. python api开发框架_python api框架
  8. Axure RP原型发布到公司服务器
  9. 58同城CTO邢宏宇:云服务助力企业多元化飞速发展
  10. oracle内存体系结构