博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原创】JAVA通过过滤器防止脚本注入
阅读量:6484 次
发布时间:2019-06-23

本文共 4520 字,大约阅读时间需要 15 分钟。

  hot3.png

Step1:自定义封装request

package com.tsou.comm.servlet;import java.util.Enumeration;import java.util.Map;import java.util.Vector;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;/** * * 
 * 功能:封装的请求处理特殊字符 * 

 * @ClassName: TsRequest * @version V1.0  * @date 2014年9月25日 * @author wangsheng */public class TsRequest extends HttpServletRequestWrapper {           private Map params;           public TsRequest(HttpServletRequest request, Map newParams) {                    super(request);                    this.params = newParams;          }           public Map getParameterMap() {                    return params ;          }           public Enumeration getParameterNames() {                    Vector l = new Vector( params.keySet());                    return l.elements();          }           public String[] getParameterValues(String name) {                   Object v = params.get(name);                    if (v == null ) {                              return null ;                   } else if (v instanceof String[]) {                             String[] value = (String[]) v;                              for (int i = 0; i < value.length; i++) {                                      value[i] = value[i].replaceAll( "<", "<" );                                      value[i] = value[i].replaceAll( ">", ">" );                             }                              return (String[]) value;                   } else if (v instanceof String) {                             String value = (String) v;                             value = value.replaceAll( "<", "<" );                             value = value.replaceAll( ">", ">" );                              return new String[] { (String) value };                   } else {                              return new String[] { v.toString() };                   }          }           public String getParameter(String name) {                   Object v = params.get(name);                    if (v == null ) {                              return null ;                   } else if (v instanceof String[]) {                             String[] strArr = (String[]) v;                              if (strArr.length > 0) {                                      String value = strArr[0];                                      value = value.replaceAll( "<", "<" );                                      value = value.replaceAll( "<", ">" );                                       return value;                             } else {                                       return null ;                             }                   } else if (v instanceof String) {                             String value = (String) v;                             value = value.replaceAll( "<", "<" );                             value = value.replaceAll( ">", ">" );                              return (String) value;                   } else {                              return v.toString();                   }          }}

Step2:设置过滤器

package com.tsou.comm.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import com.tsou.comm.servlet.TsRequest;/** * * 
 * 功能:特殊字符过滤器 * 

 * @ClassName: CharacterFilter * @version V1.0  * @date 2014年9月25日 * @author wangsheng */public class CharacterFilter implements Filter{           @Override           public void destroy() {          }           @Override           public void doFilter(ServletRequest req, ServletResponse res,                             FilterChain chain) throws IOException, ServletException {                   HttpServletRequest request = (HttpServletRequest)req;                   TsRequest wrapRequest= new TsRequest(request,request.getParameterMap());                   chain.doFilter(wrapRequest, res);          }           @Override           public void init(FilterConfig arg0) throws ServletException {          }}

Step3:拦截URL

           
                    
 characterFilter                     
 com.tsou.comm.filter.CharacterFilter           
           
                    
 characterFilter                    
 /*
           

Step4:查看效果

125008_8BLK_1258171.png

转载于:https://my.oschina.net/kings0/blog/323475

你可能感兴趣的文章
使用Mkdocs构建你的项目文档
查看>>
三分钟读懂TT猫分布式、微服务和集群之路
查看>>
fn project 运行时配置选项
查看>>
你的leader还在考核你的千行代码Bug率吗?
查看>>
多块盘制作成一个lvm
查看>>
InnoDB多版本
查看>>
关于azkaban上传job压缩包报错问题的解决方案
查看>>
JS版日期格式化和解析工具类,毫秒级
查看>>
百度人脸对比
查看>>
Linux内存管理 一个进程究竟占用多少空间?-VSS/RSS/PSS/USS
查看>>
苹果AppStore如何申请加急审核
查看>>
SpringBoot 使用Swagger2打造在线接口文档(附汉化教程)
查看>>
Mysql一个表编码的坑,mark一下
查看>>
JS动态事件绑定问题
查看>>
在WPF应用程序中利用IEditableObject接口实现可撤销编辑的对象
查看>>
android 8 wifi wifi 扫描过程
查看>>
phalcon的save方法保存失败?
查看>>
获取任意链接文章正文 API 功能简介
查看>>
线程类的常见方法介绍
查看>>
Spring连接数据库的几种常用的方式
查看>>