java防止SQL注入

article/2025/10/11 3:56:47

前言

这里常用的方法就不说了,#{}预编译不说,但是如果我们不得不用${}来传递参数,那就有点麻烦了,另外,一般我们会用到druid自带的sql注入过滤:
在这里插入图片描述
但是经过测试发现,这个方法并不能完全屏宾sql注入,比如:

select * from user where state=${state}
state传递 1 or state=2 这样就能跳过druid的检查

所以,还是需要我们自己自定义过滤拦截。

自定义拦截器

/*** 防止SQL注入的拦截器** @author scott* @time 2018-05-21*/
@Slf4j
public class SqlInjectInterceptor implements HandlerInterceptor {@Override  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object arg2, Exception arg3)  throws Exception {  // TODO Auto-generated method stub  }  @Override  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object arg2, ModelAndView arg3)  throws Exception {  // TODO Auto-generated method stub  }  @Override  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {//常规业务操作(无SQL值情况), 针对数据库SQL操作,进行开发者权限控制,防止SQL注入Enumeration<String> names = request.getParameterNames();  while(names.hasMoreElements()){  String name = names.nextElement();  String[] values = request.getParameterValues(name);  for(String value: values){//sql注入直接拦截if(judgeSQLInject(value.toLowerCase())){log.info("-----------Sql注入拦截-----------name: "+name+" -------------value:"+ value);response.setContentType("text/html;charset=UTF-8");  response.getWriter().print("参数含有非法攻击字符,已禁止继续访问!");  return false;  }//跨站xss清理clearXss(value);}  }  return true;  }  /** * 判断参数是否含有攻击串 * @param value * @return */  public boolean judgeSQLInject(String value){if(value == null || "".equals(value)){  return false;  }  String xssStr = "and |or |select |update |delete |drop |truncate |%20|=|--|!=";  String[] xssArr = xssStr.split("\\|");  for(int i=0;i<xssArr.length;i++){  if(value.indexOf(xssArr[i])>-1){  return true;  }  }  return false;  }/*** 处理跨站xss字符转义** @param value* @return*/private String clearXss(String value) {log.debug("----before--------处理跨站xss字符转义----------"+ value);if (value == null || "".equals(value)) {return value;}value = value.replaceAll("<", "<").replaceAll(">", ">");value = value.replaceAll("\\(", "(").replace("\\)", ")");value = value.replaceAll("'", "'");value = value.replaceAll("eval\\((.*)\\)", "");value = value.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']","\"\"");value = value.replace("script", "");//为了用户密码安全,禁止列表查询展示用户密码----------value = value.replace(",password","").replace("password","");log.debug("----end--------处理跨站xss字符转义----------"+ value);return value;}
}
@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer @Beanpublic SqlInjectInterceptor sqlInjectInterceptor(){return new SqlInjectInterceptor();}@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(sqlInjectInterceptor()).addPathPatterns("/**");}
}

ok,这样就差不多了,欢迎指正


http://chatgpt.dhexx.cn/article/Jjw56shF.shtml

相关文章

Pangolin-最好的SQL注入工具

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 点击这里使用RSS订阅本Blog: <script type="text/javascript" src="…

sql注入工具--Sqlmap

Sqlmap是一款自动化sql注入的工具&#xff0c;其功能强大&#xff0c;支持多种数据库&#xff0c;包括mysql&#xff0c;sqlserver等主流的数据库&#xff0c;采用独特的sql注入方法来达到自动化注入扫描漏洞的目的。 1&#xff09;基于布尔的盲注&#xff08;Type:boolean-bas…

宁浩网sql注入工具_国产SQL注入漏洞测试工具 - 超级SQL注入工具(SSQLInjection)...

此工具为本人对C#、Socket及HTTP协议、SQL注入进行深入研究后&#xff0c;闲暇时间做的一款SQL注入工具。不说秒SQLMap&#xff0c;直接秒杀什么webcruiser、Safe3SI、pangolin、havij、DSQLTools、明小子等&#xff0c;今后可以扔掉这些过时的工具了。 简介超级SQL注入工具(SS…

SQL注入工具-----sqlmap

sqlmap中的一些常见的命令&#xff1a; -h,–help 显示基本的帮助信息并退出 -hh 显示高级帮助信息并退出 –version 显示程序版本信息并退出 -u 目标URL -m 后接一个txt文件&#xff0c;文件中是多个url&#xff0c;sqlmap会自动化的检测其中的所有url -r 可以将一个post请求…

SQL注入工具

众所周知&#xff0c;SQL注入攻击是最为常见的Web应用程序攻击技术。同时SQL注入攻击所带来的安全破坏也是不可弥补的。以下罗列的10款SQL注入工具可帮助管理员及时检测存在的漏洞。 BSQL Hacker 10个SQL注入工具 BSQL Hacker是由Portcullis实验室开发的&#xff0c;BSQL Hacke…

mysql sql注入工具下载_超级SQL注入工具【SSQLInjection】

简介&#xff1a; 超级SQL注入工具(SSQLInjection)是一款基于HTTP协议自组包的SQL注入工具&#xff0c;支持出现在HTTP协议任意位置的SQL注入&#xff0c;支持各种类型的SQL注入&#xff0c;支持HTTPS模式注入。 超级SQL注入工具 (已更新beta15) 超级SQL注入工具(SSQLInjection…

mysql sql注入工具下载_sql注入工具下载|超级SQL注入工具SSQLInjectionv1.0 正式版 附使用说明 - 极光下载站...

超级SQL注入工具正式版下载。超级SQL注入工具虽然有一定的历史了&#xff0c;但是超级SQL注入工具还是一样的强悍&#xff01;超级SQL注入工具适用于Web渗透的朋友&#xff01; 超级SQL注入工具简介&#xff1a; 超级SQL注入工具(SSQLInjection)是一款基于HTTP协议自组包的SQL注…

SQLiDetector:一款功能强大的SQL注入漏洞检测工具

关于SQLiDetector SQLiDetector是一款功能强大的SQL注入漏洞检测工具&#xff0c;该工具支持BurpBouty配置文件&#xff0c;可以帮助广大研究人员通过发送多个请求&#xff08;包含14种Payload&#xff09;并检查不同数据库的152个正则表达式模式来检测基于错误的SQL注入漏洞。…

渗透测试 ( 6 ) --- SQL 注入神器 sqlmap

sqlmap 官网&#xff1a;http://sqlmap.org/ sqlmap文档地址&#xff1a;https://github.com/sqlmapproject/sqlmap/wiki/Usage sqlmap 使用 思维导图&#xff1a;http://download.csdn.net/detail/freeking101/9887831 黑帽与白帽都喜爱的十大SQL注入工具&#xff1a;http://…

10个SQL注入工具

众所周知&#xff0c;SQL注入攻击是最为常见的Web应用程序攻击技术。同时SQL注入攻击所带来的安全破坏也是不可弥补的。以下罗列的10款SQL工具可帮助管理员及时检测存在的漏洞。 BSQL Hacker BSQL Hacker是由Portcullis实验室开发的&#xff0c;BSQL Hacker 是一个SQL自动注入…

Web安全:SQL注入工具

SQL注入工具主要是针对Web服务器后台数据库的注入&#xff0c;其主要目的是获取数据库中的数据。以前常用的SQL注入工具有啊D注入工具及Domain&#xff08;明小子注入工具&#xff09;&#xff0c;现在常用的SQL注入工具有HackBar、SQLMap 、Pangolin、Havij、Safe3 SQL inject…

面试官:说说设备像素、css像素、设备独立像素、dpr、ppi 之间的区别?

一、背景 在css中我们通常使用px作为单位&#xff0c;在PC浏览器中css的1个像素都是对应着电脑屏幕的1个物理像素 这会造成一种错觉&#xff0c;我们会认为css中的像素就是设备的物理像素 但实际情况却并非如此&#xff0c;css中的像素只是一个抽象的单位&#xff0c;在不同的设…

dpr(设备像素比)与 移动端适配

在上一篇文章中&#xff08;使用 rem 实现移动端的自适应布局&#xff09;&#xff0c;我们讲到 iphone6s 的屏幕宽度为 375px&#xff0c;我们拿到的视觉稿也是基于iphone6s 设计的&#xff0c;但是设计稿的宽度却是 750px&#xff0c;这是为什么呢&#xff1f; 原因就是 ipho…

新一代Web技术栈的演进:SSR/SSG/ISR/DPR都在做什么?

在开始阅读之前&#xff0c;先解释一下文章里用到的英文缩写&#xff1a; CSR&#xff1a;Client Side Rendering&#xff0c;客户端&#xff08;通常是浏览器&#xff09;渲染&#xff1b;SSR&#xff1a;Server Side Rendering&#xff0c;服务端渲染&#xff1b;SSG&#xf…

Dapr

环境&#xff1a; window10 docker desktop dotnet 5.0 一、安装 Dapr CLI 打开 Windows PowerShell 或 cmd &#xff0c;运行以下命令以安装 Dapr CLI&#xff0c;并添加安装路径到系统环境变量中。 powershell -Command "iwr -useb https://raw.githubusercontent.…

当我们在讨论设备像素比(device pixel ratio,dpr)的时候我们在讨论什么?

目录 0. 为什么要写这篇文章&#xff1f;1. 设备像素比的问题在哪里&#xff1f;1.1. 不同的论述导致不同的理解1.2. 设备独立像素与CSS像素1.3. 小结 2. 设备像素比 设备物理像素/CSS像素&#xff0c;真的正确吗&#xff1f;2.1. PC端验证2.2. 手机端验证2.3. 出了什么问题&a…

动态dp

以前学树型dp留下的题目&#xff0c;没有写&#xff0c;然后过了几个月后又回来写了这道题 战略游戏 这是一道典型的最小点覆盖的模板&#xff0c;蒟蒻采用的是树型dp的做法 设 \(f[i][0/1]\) 在以 \(i\) 为根的子树中&#xff0c;选或不选当前这个点所需要的最少的点 那么转移…

移动端适配dpr

1. 移动端适配的代码&#xff08;设计稿iPhone6&#xff09;如下&#xff1a; (function (doc,win) {// seMetaTagScale(doc, win)var fn function () { var deviceWidth doc.documentElement.clientWidth; // css逻辑像素&#xff0c;不是物理像素if (deviceWidth > 82…

移动端布局(一)dp、dip、PPI、dpr、图片模糊

注: 此篇文章引用多篇文章&#xff0c;在文章的结尾处有注明文章的来源 高清屏 即高清屏,把更多的像素压缩至一块屏幕里&#xff0c;从而达到更高分辨率显示的细腻程度&#xff0c;使人眼无法分辨出单个的像素。 物理像素(dp) 物理像素&#xff0c;设备的硬件像素&#xff…

不同设备屏幕尺寸和DPR适配

为什么需要适配 目前市面上设备屏幕属性十分多样化&#xff08;宽度和DPR并不一致&#xff09;&#xff0c;而作为设计和前端开发&#xff0c;无法为每个尺寸的设备单独设计一套UI并将其转为前端代码&#xff0c;这不现实。所以我们需要一套方案来将一套设计稿完美呈现在不同尺…