您当前的位置:首页 > 电脑百科 > 安全防护 > 数据安全

SpringMVC是如何利用拦截器防止SQL注入

时间:2019-10-18 14:18:03  来源:  作者:

SQL注入简介

通俗的讲,SQL注入就是恶意黑客或者竞争对手利用现有的B/S或者C/S架构的系统,将恶意的SQL语句通过表单等传递给后台SQL数据库引擎执行。比如,一个黑客可以利用网站的漏洞,使用SQL注入的方式取得一个公司网站后台的所有数据。试想一下,如果开发人员不对用户传递过来的输入进行过滤处理,那么遇到恶意用户的时候,并且系统被发现有漏洞的时候,后果将是令人难以想象的。最糟糕的是攻击者拿到了数据库服务器最高级的权限,可以对整个数据库服务器的数据做任何操作。

通常情况下,SQL注入攻击一般分为以下几个步骤:

  • 判断WEB环境是否可以注入SQL。对于一个传统的WEB网页来说,如果是一个简单的静态页面,比如地址为http://www.news.com/100.html的网页,这是一个简单的静态页面,一般不涉及对数据库的查询。而如果这个网页的网址变成了:http://www.news.com/news.asp?id=100 那么,这就是一个根据主键id来查询数据的动态网页了。攻击者往往能够在 id=100的后面加上一些自己的SQL,用来“欺骗”过应用程序。
  • 寻找SQL注入点。当攻击者确定某个页面可以使用SQL注入之后,他一般会寻找可以SQL注入的点。而这些点往往就是网页或者应用程序中的用于向服务器发送用户数据的表单了。一般的流程是,客户端通过这些表单发送一些用户信息的字段,比如用户名和密码,接着服务器就会根据这些字段去查询数据库。而如果用户输入了一些非法的字符,比如’这个符号,那么在SQL解析的时候,解析的结果可能并不是应用开发人员想象中那样。
  • 寻找系统的后台。这一点就建立在破坏者对整个系统的了解程度上面了,如果攻击者对整个系统了如指掌,那么实现攻击也就是一件很简单的事情了。
  • 入侵和破坏。当攻击者攻破系统之后,整个系统从某种意义上来讲已经失去意义了。

SQL注入案例

一个简单的php登录验证SQL注入

比如一个公司有一个用来管理客户的客户管理系统,在进入后台进行管理的时候需要输入用户名和密码。

假设在客户端传给服务器的字段分别为用户名username和密码password,那么如果用来处理登录的服务器端代码对用户的输入做以下处理:

SpringMVC是如何利用拦截器防止SQL注入

 

上面的PHP代码就是首先获取客户端POST过来的填写在表单里面的用户名和密码,接着要MySQL去执行下面这条SQL语句:

SELECT `id` FROM `users` WHERE `username` = username AND `password` = password;

可以看到上面的代码没有对用户的输入做任何的过滤,这是非常容易遭到黑客攻击的。

比如,一个用户在输入用户名的输入框里面输入了

user’;SHOW TABLES;--

那么就会解析为下面的SQL:

SELECT `id` FROM `users` WHERE `username` = ‘user’;SHOW TABLES;-- AND `password` = password;

可以看到被解析的SQL被拆分为了2条有用的SQL:

(1)SELECT `id` FROM `users` WHERE `username` = ‘user’;
(2)SHOW TABLES;

而后面验证密码的部分就被注释掉了。这样攻击者就轻松的获得了这个数据库里面的所有表的名字。同样的道理,如果攻击者在输入框里面输入:

’;DROP TABLE [table_name];--

那么,这一张表就被删除了,可见后果是非常严重的。

而用户如果在用户名输入框里面输入了:user’or 1=1--

那么会被解析成:

SELECT `id` FROM `users` WHERE `username` = ‘user’
or 1=1-- AND `password` = password;

这里可以看到1=1永远为真,这样不用输入用户名就直接可以登入系统了。

一个ASP新闻动态页面的id查询

比如有一个新闻网站的动态页面是这种格式:

http://www.news.com/news.asp?id=100

那么当用户在浏览器的地址框里面输入

http://www.news.com/news.asp?id=100;and user>0

那么如果这个网站的数据库用的是SQL Server的话,那么SQL Server在解析的时候,由于user是SQL Server的一个内置变量,它的值就是当前连接数据库的用户,那么SQL在执行到这里的时候会拿一个类型为nvarchar的和一个int类型的比较。比较过程中就必然涉及类型的转化,然而不幸的是,转化过程并不是一帆风顺,出错的时候SQL Server将会给出类似将nvarchar值”aaa”转为为int的列时发生语法错误。这个时候攻击者就轻松的获得了数据库的用户名。

SpringMVC拦截器防止SQL注入

为了有效的减少以及防止SQL注入的攻击,开发人员在开发的时候一定不要期待用户的输入都是合理的,当用户输入完毕之后,应该严谨的对用户提交的数据进行格式上的检查以及过滤,尽可能的减少被注入SQL 的风险。

一般来说,不同的服务器端语言都有不同的解决方案。比如拿中小型企业采用得最多的PHP语言来说,PHP的官方就为开发者提供了这样的一些函数,比如mysql_real_escape_string()等。

接下来会详细介绍如何通过SpringMVC的拦截器实现防止SQL注入的功能。

这里以我的大数据人才简历库的拦截器为例。

自定义拦截器类SqlInjectInterceptor实现HandlerInterceptor接口

核心处理方法

SpringMVC是如何利用拦截器防止SQL注入

 

配置拦截器

SpringMVC是如何利用拦截器防止SQL注入

 

SQL注入总结

安全问题从古至今都有着非常高的关注度,如今互联网高速发达,各种网络应用层出不穷。不管是现在炙手可热的云计算和大数据,还是传统的B/S或者C/S架构的网络应用,数据的安全性是至关重要的。从应用层面来讲,网络应用的开发者可以通过完善软件的架构,尽量减少因为BUG而导致的数据泄漏的问题。开发者可以不断的审视与完善自己的系统,站在攻击者的角度上去开发某些关键的安全性要求比较高的环节,如银行支付部分等,这样能够在一定程度上面减少SQL注入等应用层面攻击数据库的风险。



Tags:SQL注入   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
前言目标是一大学,在一次挖洞过程中遇到个sql注入,尝试进一步利用扩大危害,漏洞已报送平台进行了修复私信我获取网络安全学习资料 1.2000多本网络安全系列电子书 2.网络安全标...【详细内容】
2021-11-26  Tags: SQL注入  点击:(21)  评论:(0)  加入收藏
本人也是小白一枚,大佬请绕过,这个其实是六月份的时候做的,那时候想多点实战经验,就直接用谷歌搜索找了一些网站,这个是其中一个1、目标网站 2、发现有WAF防护 3、判断存在注入...【详细内容】
2021-10-19  Tags: SQL注入  点击:(52)  评论:(0)  加入收藏
(一)SQL注入。1.如何理解SQL注入? SQL注入是一种将SQL代码添加到输入参数中,传递到SQL服务器解析并执行的一种攻击手法。2.SQL注入是如何产生的? web开发人员无法保证所有的输入...【详细内容】
2021-09-17  Tags: SQL注入  点击:(47)  评论:(0)  加入收藏
一 前言本文将针对开发过程中依旧经常出现的SQL编码缺陷,讲解其背后原理及形成原因。并以几个常见漏洞存在形式,提醒技术同学注意相关问题。最后会根据原理,提供解决或缓解方案...【详细内容】
2021-09-17  Tags: SQL注入  点击:(67)  评论:(0)  加入收藏
前言本人ctf选手一名,在最近做练习时遇到了一些sql注入的题目,但是sql注入一直是我的弱项之一,所以写一篇总结记录一下最近学到的一些sql注入漏洞的利用。可回显注入联合注入在...【详细内容】
2021-08-26  Tags: SQL注入  点击:(60)  评论:(0)  加入收藏
前言最近挖edusrc的时候遇到有注入点但是有waf绕不过,头疼。 可以看到还是phpstudy建站的,太熟悉了这个,不知道这个什么waf各位师傅知道的可以评论一下,所以写这篇文章是供各位...【详细内容】
2021-08-13  Tags: SQL注入  点击:(66)  评论:(0)  加入收藏
1. 使用 Burpsuite: 1. Capture the request using burpsuite. 2. Send the request to burp scanner. 3. Proceed with active scan. 4. Once the scan is finished, l...【详细内容】
2021-08-04  Tags: SQL注入  点击:(74)  评论:(0)  加入收藏
0×00:前言对于MYSQL知识的一个初总结 0×01:正文 MYSQL数据库特性1.Mysql数据库默认不区分大小写,利用此特性可以进行大小写过正则匹配,举个简单的例子,有的题目中只...【详细内容】
2021-07-29  Tags: SQL注入  点击:(88)  评论:(0)  加入收藏
在本地搭建服务器,httpd-vhosts.conf 中设置本地绑定的域名: 其中,zzzphp为下载的zzzphp cms的内容。然后,本机上的zzzphp cms的目录结构为如下: 在按照要求安装好cms后,本地cms的...【详细内容】
2021-07-16  Tags: SQL注入  点击:(80)  评论:(0)  加入收藏
得到一个像原来老师一样督促你、关心你的人很难。。。---- 网易云热评一、常用命令及函数1、order by排序,获取数据有几个字段,后面小于等于字段数,都会返回结果,大于字段数返回...【详细内容】
2021-05-13  Tags: SQL注入  点击:(224)  评论:(0)  加入收藏
▌简易百科推荐
众所周知,Windows系统流氓软件众多,其中不乏出身大厂的产品。这些带有流氓性质的软件,很多都会偷偷扫描系统数据,读取用户文件,造成电脑卡顿拖慢不说,还严重侵害了个人隐私,造成巨...【详细内容】
2021-12-06  趣玩APPS    Tags:流氓软件   点击:(16)  评论:(0)  加入收藏
前言目标是一大学,在一次挖洞过程中遇到个sql注入,尝试进一步利用扩大危害,漏洞已报送平台进行了修复私信我获取网络安全学习资料 1.2000多本网络安全系列电子书 2.网络安全标...【详细内容】
2021-11-26  IT野涵    Tags:sql注入   点击:(21)  评论:(0)  加入收藏
互联网时代,不论是个人还是组织,都将数据视为一项重要的资产。为了便于存储、管理,企业常常会为各项数据建立一个数据库,如果没有做好安全风险防护,一旦数据库被攻占,企业将迎来很...【详细内容】
2021-10-28  快快网络   企鹅号  Tags:数据库   点击:(50)  评论:(0)  加入收藏
前言(可能思路狭隘,有缺有错,师傅们多带带)【查看资料】Author: 0ne本篇文章数据来源于18+省市级别HVV,90+单位失陷报告。(一部分是笔者的参与,一部分是薅的公司其他师傅的报告...【详细内容】
2021-10-28  IT野涵    Tags:缺口   点击:(46)  评论:(0)  加入收藏
本人也是小白一枚,大佬请绕过,这个其实是六月份的时候做的,那时候想多点实战经验,就直接用谷歌搜索找了一些网站,这个是其中一个1、目标网站 2、发现有WAF防护 3、判断存在注入...【详细内容】
2021-10-19    博客园  Tags:SQL注入   点击:(52)  评论:(0)  加入收藏
一 前言本文将针对开发过程中依旧经常出现的SQL编码缺陷,讲解其背后原理及形成原因。并以几个常见漏洞存在形式,提醒技术同学注意相关问题。最后会根据原理,提供解决或缓解方案...【详细内容】
2021-09-17  woaker    Tags:SQL注入漏洞   点击:(67)  评论:(0)  加入收藏
前言本人ctf选手一名,在最近做练习时遇到了一些sql注入的题目,但是sql注入一直是我的弱项之一,所以写一篇总结记录一下最近学到的一些sql注入漏洞的利用。可回显注入联合注入在...【详细内容】
2021-08-26  合天网安实验室    Tags:sql注入   点击:(60)  评论:(0)  加入收藏
“放纵自己的欲望是最大的祸害,窥探别人的隐私是最大的罪恶,不知自己的过失是最大的病痛”。 上文咱们知道了目前互联网的数据安全存在隐患,数据安全的问题,每天都在发生,只不过...【详细内容】
2021-08-13  小陶子矿工    Tags:IPFS   点击:(79)  评论:(0)  加入收藏
前言最近挖edusrc的时候遇到有注入点但是有waf绕不过,头疼。 可以看到还是phpstudy建站的,太熟悉了这个,不知道这个什么waf各位师傅知道的可以评论一下,所以写这篇文章是供各位...【详细内容】
2021-08-13  IT影子    Tags:sql注入   点击:(66)  评论:(0)  加入收藏
1. 使用 Burpsuite: 1. Capture the request using burpsuite. 2. Send the request to burp scanner. 3. Proceed with active scan. 4. Once the scan is finished, l...【详细内容】
2021-08-04  李志宽    Tags:SQL注入   点击:(74)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条