java类过滤器,防止页面sql注入

过滤器实现全局防SQL注入 目录SqlInjectFilter.javaMyRequestWrapper.java 场景: 公司渗透测试,发现了输入框有SQL注入风险,于是进行修改。 解决方案: 增加全局过滤器,对请求参数中存在SQL过滤器的参数进行提示,主要增加了两个类: SqlInjectFilter,过滤器; MyRequestWrapper,用于过滤器中获取POST请求参数。 SqlInjectFilter.java import com.alibaba.fastjson.JSONObject; import com. 阅读详情
  1. package com.tarena.dingdang.filter;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.Enumeration;  
  5.   
  6. import javax.servlet.Filter;  
  7. import javax.servlet.FilterChain;  
  8. import javax.servlet.FilterConfig;  
  9. import javax.servlet.ServletException;  
  10. import javax.servlet.ServletRequest;  
  11. import javax.servlet.ServletResponse;  
  12. import javax.servlet.http.HttpServletRequest;  
  13.   
  14. public class AntiSqlInjectionfilter implements Filter {  
  15.   
  16.     public void destroy() {  
  17.         // TODO Auto-generated method stub  
  18.     }  
  19.       
  20.     public void init(FilterConfig arg0) throws ServletException {  
  21.         // TODO Auto-generated method stub  
  22.     }  
  23.       
  24.     public void doFilter(ServletRequest args0, ServletResponse args1,  
  25.             FilterChain chain) throws IOException, ServletException {  
  26.         HttpServletRequest req=(HttpServletRequest)args0;  
  27.         HttpServletRequest res=(HttpServletRequest)args1;  
  28.          //获得所有请求参数名  
  29.         Enumeration params = req.getParameterNames();  
  30.         String sql = "";  
  31.         while (params.hasMoreElements()) {  
  32.             //得到参数名  
  33.             String name = params.nextElement().toString();  
  34.             //System.out.println("name===========================" + name + "--");  
  35.             //得到参数对应值  
  36.             String[] value = req.getParameterValues(name);  
  37.             for (int i = 0; i < value.length; i++) {  
  38.                 sql = sql + value[i];  
  39.             }  
  40.         }  
  41.         //System.out.println("============================SQL"+sql);  
  42.         //有sql关键字,跳转到error.html  
  43.         if (sqlValidate(sql)) {  
  44.             throw new IOException("您发送请求中的参数中含有非法字符");  
  45.             //String ip = req.getRemoteAddr();  
  46.         } else {  
  47.             chain.doFilter(args0,args1);  
  48.         }  
  49.     }  
  50.       
  51.     //效验  
  52.     protected static boolean sqlValidate(String str) {  
  53.         str = str.toLowerCase();//统一转为小写  
  54.         String badStr = "'|and|exec|execute|insert|select|delete|update|count|drop|*|%|chr|mid|master|truncate|" +  
  55.                 "char|declare|sitename|net user|xp_cmdshell|;|or|-|+|,|like'|and|exec|execute|insert|create|drop|" +  
  56.                 "table|from|grant|use|group_concat|column_name|" +  
  57.                 "information_schema.columns|table_schema|union|where|select|delete|update|order|by|count|*|" +  
  58.                 "chr|mid|master|truncate|char|declare|or|;|-|--|+|,|like|//|/|%|#";//过滤掉的sql关键字,可以手动添加  
  59.         String[] badStrs = badStr.split("\\|");  
  60.         for (int i = 0; i < badStrs.length; i++) {  
  61.             if (str.indexOf(badStrs[i]) >= 0) {  
  62.                 return true;  
  63.             }  
  64.         }  
  65.         return false;  
  66.     }  
  67. }  
  68.   
  69.   
  70. <!--在web.xml文件中的配置-->  
  71. <!-- 防止SQL注入的过滤器 -->  
  72.     <filter>  
  73.         <filter-name>antiSqlInjection</filter-name>  
  74.         <filter-class>com.tarena.dingdang.filter.AntiSqlInjectionfilter</filter-class>  
  75.     </filter>  
  76.     <filter-mapping>  
  77.         <filter-name>antiSqlInjection</filter-name>  
  78.         <url-pattern>/*</url-pattern>  
  79.     </filter-mapping>  
Java项目防止SQL注入的方式总结 Java项目防止SQL注入的方式总结 springboot配置请求过滤器防止SQL注入 nginx防止SQL注入 mybatis防止SQL注入 阅读详情

相关推荐

java过滤器防sql注入

外网可能会被攻击,简单的处理可以避免! 外网可能会被攻击,简单的处理可以避免! 外网可能会被攻击,简单的处理可以避免! 外网可能会被攻击,简单的处理可以避免! 外网可能会被攻击,简单的处理可以避免! 外网可能会被攻击,简单的处理可以避免!

URL的参数中一定要避免的非法字符

在URL中的参数中不能有空格、双字节字符(如汉字),否则会破坏URL中参数含义的准确性,成为非法的URL,访问该URL后会报:Server returned HTTP response code: 505 for URL错误!解决方法(以参数中含有空格为例):空格的unicode为%20,将参数中的所有空格都替换为%20即可。

软件工程 plus 人工智能 1万+

SQL注入过滤 (Java版)

SQL 安全注入漏洞过滤器类 Java实现 Java类实现,以及配置文件web.xml

Ajax请求,参数中含有非法字符处理

Ajax请求,参数中含有非法字符处理 自己遇到了类似的问题,在网上找了这个方法,测试了下,可以。 需要 json2.js文件 参数 var jsondata = {"param1":"+_)(*&^%$#@!~","param2":"!@#$%^&*(()_+"}; jQuery.ajax({     url : "demo/specialcharacter.htm",  

Java 之路 1万+

sql注入Java过滤器

配置在web.xml中,可以防止SQL注入,可以自己定义一些需要过滤的特殊字符

主要使用Filter针对Xss攻击,sql注入,服务器访问白名单,以及csrf进行安全校验

主要使用Filter针对Xss攻击,sql注入,服务器访问白名单,以及csrf进行安全校验 1,主要实现的是三大块功能:Xss攻击,sql注入,服务器白名单,以及csrf 2,此Filter为真实项目部署,在XssHttpServletRequestWrapper.java文件中的cleanSqlKeyWords方法为具体的Xss拦截逻辑,可根根据自己的需要进行完善 3,服务器白名单为单独的一个工具包,在文章最后给出 4,文章开发环境为JDK1.8,使用SpringBoot框架进行开发 5,文章会分享出整个Filter文件包,包含四个java文件: 5.1,public class CrosXssFilter implements Filter 5.2,public class CrosXssFilterConfig implements WebMvcConfigurer 5.3,public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter 5.4,public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper 6,服务器白名单校验的java文件: 6.1,public class ServerWhiteListUtil 7,如果不要需要使用服务器白名单功能,那么,注释CrosXssFilter.java 文件的36-39行文件代码即可 原文链接:https://blog.youkuaiyun.com/zlxls/article/details/107432468

Java使用过滤器防止XSS脚本注入

前几天有个客户在系统上面写了个注入html语句,导致打开页面就显示一张炒鸡大的图片,影响美观。后仔细想想,幸亏是注入的仅仅是一条html语句,知道严重性,马上开始一番安全配置。 一. 定义过滤器 package com.cn.unit.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; im

踮脚敲代码 6993

java过滤器,防止XSS、SQL

java过滤器,XSS : 跨站脚本攻击(Cross Site Scripting),SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令

Java防止SQL注入(通过Filter过滤器功能进行拦截)

前言 contentType=multipart/form-data的header以文件流的的形式上传文件时,如果代码中使用了Filter,会出现无法用Filter 中用ServletRequest.getParameter 方法取不到一并提交上来的参数 multipart/form-data格式: package com.cn.unit.filter; import java.io.IOException; import javax.servlet.Filter; import java.

qq_37272886的博客 7216

转录组分析中的Fastp和FastQC:如何快速检测数据质量并优化流程

本文深入探讨了转录组分析中数据质量控制的核心流程,重点介绍了Fastp和FastQC两款工具的组合应用。FastQC负责对原始测序数据进行全面质量评估,生成可视化报告;Fastp则能一站式完成接头切除、低质量序列过滤、长度筛选等关键质控步骤。文章提供了详细的参数解读、实战脚本和自动化流程构建指南,帮助研究人员快速检测数据质量并优化预处理流程,为下游的差异表达等分析奠定可靠基础。

weixin_28452161的博客 177

CST STUDIO SUITE 2023安装

破解工具的Crack文件夹内有一个名为「CST Studio Suite 2022」的文件夹,这也是于CST的安装目录同名的文件夹,直接把它拷贝到CST Studio Suite 2022的同级路径下即可,比如你的CST安装路径为:D:\Program Files\CST Studio Suite 2022,则将Crack目录内的「CST Studio Suite 2022」文件夹复制到 D:\Program Files\ 这个级别的路径下即可。软件百度网盘链接放在文章末尾啦!先不着急启动CST或者激活。

m0_49516223的博客 4116

java类过滤器,防止页面SQL注入

转自:http://www.oschina.net/code/snippet_811941_14131package com.tarena.dingdang.filter; import java.io.IOException; import java.util.Enumeration; import javax.servlet.Filter; import javax.servlet.F

ykletters的专栏 4112

从标记基因到功能分析:手把手教你人工注释单细胞亚群的完整流程

本文详细介绍了人工注释单细胞亚群的完整流程,从标记基因筛选到功能分析验证,特别针对肿瘤微环境、发育轨迹等复杂场景提供解决方案。通过差异表达分析、多维数据整合和实验验证,帮助研究者准确识别细胞类型,提升单细胞转录组研究的生物学解读深度。

jenkins8butler的博客 244

java 过滤sql关键字_java类过滤器,防止页面SQL注入

package com.tarena.dingdang.filter;import java.io.IOException;import java.util.Enumeration;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.s...

weixin_29018815的博客 1102

Keil5 安装与卸载全攻略:从零开始到完美避坑

本文提供了Keil5集成开发环境的完整安装与卸载指南。针对嵌入式开发新手,详细解析了安装前的关键准备、MDK核心与C51双环境的安装激活步骤、常见问题排查,并重点介绍了如何彻底卸载软件以避免残留问题,帮助用户从零开始搭建稳定高效的开发环境。

weixin_29172963的博客 636

相场断裂模型中的各向异性机制:从裂纹密度到驱动力的数值实现

断裂力学是研究材料在载荷作用下裂纹萌生与扩展规律的基础学科,其核心在于理解材料失效的能量准则与路径选择。传统方法通常预设裂纹路径,而相场断裂模型通过引入连续的相场变量,将裂纹模拟转化为一个能量最小化问题,能够自发预测裂纹的萌生、扩展与分叉,在工程失效分析中具有重要价值。当材料具有显著的方向依赖性时,如单晶、复合材料或轧制金属板,各向同性假设会失效,此时需引入各向异性机制。该机制的核心在于改造两个关键部分:一是裂纹密度函数,通过引入各向异性张量来定义不同方向上形成裂纹微结构的能量成本;二是临界能量释放率(断裂

weixin_31421613的博客 297

java防止sql注入过滤器

普通的列表模糊查询,可能会被sql注入利用,造成数据泄漏,严重的甚至导致删表删库! 貌似正常的sql语句 SELECT*FROMtblStudentWHEREunit_namelike'%aaa%'orderbycreate_timedesclimit 0, 30 ; 倘若想要借此进行sql注入,input输入框中输入aaa%' or '1%'= '1,...

peter_qyq的博客 7022

风机叶片小规模振动监测数据集--读取测试

ETH风电叶片缺陷数据集–读取测试 数据简介 提示:这里可以添加本文要记录的大概内容: 结构健康监测是保障重要机电设备、建筑设施健康的重要技术手段。 一、lvm_read包安装 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务

cnjs1994的博客 2850
上一篇: Hibernate事务与并发问题处理(乐观锁与悲观锁)
下一篇: 大数据处理系列之(一)Java线程池使用
andyLiuJava
博客等级 码龄14年 0粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值