防止SQL注入攻击-学习笔记
所谓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注入攻击-学习笔记相关推荐
- 基于pikachu漏洞平台的 --SQL注入攻击学习与总结
SQL注入攻击 基础知识 常见注释符号 使用示例 pikachu 漏洞联系平台 -- SQL注入 SQL注入攻击流程 注入点类型 数字型注入(POST) 字符型注入(GET) 搜索型注入 XX型注入 ...
- ASP.NET 4学习笔记(1) SQL注入攻击及解决方案.
一, 定义:所谓SQL注入攻击是应用程序开发人员未预期地把SQL代码传入到应用程序的过程,只有那些直接使用用户提供的值构造SQL语句的应用程序才会受影响. 例如原SQL代码为: select Orde ...
- SQL注入攻击及防御 手动注入+sqlmap自动化注入实战(网络安全学习12)
CONTENTS 1 项目实验环境 2 SQL注入概述 2.1 SQL注入简介 2.2 SQL注入的危害 3 SQL基础回顾 3.1 联合查询union 3.2 information_schema数 ...
- ADO.NET笔记——带参数的查询防止SQL注入攻击
相关知识: 把单引号替换成两个单引号,虽然能起到一定的防止SQL注入攻击的作用,但是更为有效的办法是把要拼接的内容做成"参数" SQLCommand支持带参数的查询,也就是说,可以 ...
- mysql注入攻击实_三十三、MySQL基础系列笔记之MySQL安全问题与SQL注入攻击
SQL注入攻击大多数与程序有关系,程序不严谨是导致SQL注入攻击成功的一个原因.安全问题不容忽视,平常的开发中应关注安全问题.下面简单记录PHP中的SQL攻击问题. 什么是SQL注入攻击 SQL注入( ...
- 渗透测试笔记(三)——SQL注入攻击及防御(1)
SQL注入危害 程序没有细致的过滤用户输入的数据,致使非法数据侵入系统. 1.对于Web应用程序而言,用户核心数据存储在数据库中,例如MySQL.SQL Server.Oracle等: 2.通过SQL ...
- Java程序员从笨鸟到菜鸟之(一百)sql注入攻击详解(一)sql注入原理详解
前段时间,在很多博客和微博中暴漏出了12306铁道部网站的一些漏洞,作为这么大的一个项目,要说有漏洞也不是没可能,但其漏洞确是一些菜鸟级程序员才会犯的错误.其实sql注入漏洞就是一个.作为一个菜鸟小程 ...
- 2017-2018-2 20179216 《网络攻防与实践》 SQL注入攻击
1. SQL语言 结构化查询语言(Structured Query Language)简称SQL:是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系 ...
- 如何有效防止SQL注入攻击
SQL注入攻击是黑客对数据库进行攻击常用的手段之一,随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验参差不齐,相当大一部分程序员在编写代码的时候,没 ...
最新文章
- 计算机组成原理小论文参考文献,急!···跪求.《计算机组成原理》--论文--一篇...
- 每日一皮:资深程序员调试代码的样子...
- 设计模式总结 (1)模式分类
- SpringBoot2.0 基础案例(04):定时任务和异步任务的使用方式
- Android文本框实现搜索和清空效果
- (zt)Flash与C++交互
- python ax.imshow_python – Matplotlib imshow / matshow在情节上显...
- O-RAN:致力于ICDT融合,打造开放与智能的无线接入网
- 游戏中基于物理的渲染(一)
- FPGA实现“打字机”(VGA UART)
- 计算机excel无法打开,双击Excel软件无法打开表格文件怎么办?
- javassist教程
- PostgreSQL 配置优化
- Spark Container killed by YARN for exceeding memory limits. 11.1 GB of 11 GB physical memory used
- 国产国脑与腾讯会议配合挺默契
- 如何实现微信内域名防封,微信域名防封跳转
- 原码,反码,补码是什么?
- python报错:SyntaxError: Missing parentheses in call to ‘exec‘
- VUE打印 每页顶部添加一个二维码
- 编译原理第八章-符号表
热门文章
- 从SPACE矩阵,看5G究竟是否在走向成功?
- 计算机二级命名错误是不是不会变绿,计算机文管二级试题.doc
- notification源码分析_antd源码解读(10)- notification
- 背了黑锅以后,我找到了二师兄帮忙...
- 0.1+0.2不等于0.3,微信小程序云开发如何解决JavaScript小数计算精度失准的问题
- KubeVela 1.1 发布,开启混合环境应用交付新里程碑
- python api开发框架_python api框架
- Axure RP原型发布到公司服务器
- 58同城CTO邢宏宇:云服务助力企业多元化飞速发展
- oracle内存体系结构