JSP中过滤器的设置
JSP中过滤器的设置
package com.filter; import java.io.IOException;
import java.net.URLDecoder;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern; 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 javax.servlet.http.HttpServletResponse; public class SQLFilter implements Filter{ static String reg ="(?:')|(?:--)|(/\\*(?:.|[\\n\\r])*?\\*/)|\\b(select|update|and|or|delete|insert|trancate|char|into|substr|ascii|declare|exec|count|master|into|drop|execute|DBMS_XMLQUERY.GETXML|DBMS_XMLQUERY.NEWCONTEXT)\\b|"
+ "\\b(?:script|eval|vbscript|javascript|base)\\b|(?:[`]+)|(?:<script>)|(?:\\b(?:onload|onerror|onunload|onclick|ondblclick)\\b)";
// ?: 只匹配,不缓存匹配到的内容;
// /\\*相当于匹配/*
// . 表示任意可显示字符
// \\b()\\b 表示单独匹配单词
// [\\n\\r] 表示只要符合其中的任意一个;[1-9]也可以是一个范围; static Pattern sqlPattern = Pattern.compile(reg, Pattern.CASE_INSENSITIVE); @Override
public void destroy() {
// TODO Auto-generated method stub } @Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub } @Override
public void doFilter(final ServletRequest req, final ServletResponse resp,
final FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse)resp; String uri = request.getRequestURI(); Set<String> passURIs = new HashSet<String>();
passURIs.add("/dsp71025/kdxt/kysj/qlysscyj.jsp");
passURIs.add("/dsp71025/kdxt/kysj/lkfsl.jsp"); if(passURIs.contains(uri)){ }else{
Map<String,String[]> params = request.getParameterMap(); for(String pk : params.keySet()){
String[] value = params.get(pk);
if(!isValid(value)){
System.out.println("参数:"+pk+"的值:"+Arrays.toString(value)+"不合法!");
return ;
}
}
} chain.doFilter(request, response); } private boolean isValid(String[] pValue){ if(pValue != null && pValue.length > 0){ for(int i=0;i<pValue.length;i++){
String s = pValue[i];
System.out.println("解码前的值: "+s);
//"%"编码后为"%25"
s = URLDecoder.decode(s.replaceAll("%", "%25"));
System.out.println("解码后的值: "+s);
if (sqlPattern.matcher(s).find()) {
return false;
}
} }
return true; } }
JSP中过滤器的设置的更多相关文章
- [转]JSP中的编码设置
转至:http://blog.csdn.net/XinVSYuan/article/details/3864853 1. pageEncoding:<%@ page pageEncoding=& ...
- 在Java中导出word、excel格式文件时JSP页面头的设置
我们在JSP中往往会把一些表格里的东西需要导出到本地,一般都是导成word.excel格式的文件.这只需要在JSP页面头设置及在<head></head>标签中添加下面的代码: ...
- Servlet和JSP中的过滤器都是Java类
JSP 过滤器 Servlet和JSP中的过滤器都是Java类,它们存在的目的如下: 在请求访问后端资源时拦截它 管理从服务器返回给客户端的响应 下面列出了多种常用的过滤器类型: 认证过滤器 数据压缩 ...
- jsp中添加过滤器,实现校验用户身份
我现在需要实现一个功能,就是用户登录前不允许访问系统,我使用的是jsp的过滤器来实现的. 先把filter过滤器的代码粘出来: package com.day8.filter; import java ...
- JSP中乱码问题
一.JSP页面显示乱码 二.表单提交中文时出现乱码 三.数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供大 ...
- JSP中pageEncoding和charset区别,中文乱码解决方案(转载)
转载自:JSP中pageEncoding和charset区别,中文乱码解决方案 JSP指令标签中<%@ page contentType="text/html;charset=GB23 ...
- jsp中pageEncoding、charset=UTF -8
jsp中pageEncoding.charset=UTF -8" 在JSP/Servlet 中主要有以下几个地方可以设置编码,pageEncoding="UTF-8". ...
- JSP使用过滤器防止SQL注入
什么是SQL注入攻击?引用百度百科的解释: sql注入_百度百科: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具 ...
- servlet和jsp页面过滤器Filter的作用及配置
刚刚有个朋友问我,Servlet的过滤器有什么作用? 现在发个帖子说明一下, 过滤器是一个对象,可以传输请求或修改响应.它可以在请求到达Servlet/JSP之前对其进行预处理, ...
随机推荐
- Linux 常用命令:解压缩
目录 Linux 常用命令:解压缩 说明 tar 涉及参数说明: 压缩 解压 zip压缩 涉及参数说明: uzip解压 涉及参数说明: gzip 涉及参数说明: 压缩率比较 Linux 常用命令:解压 ...
- C-基础:冒泡排序
#include <fstream> #include <iostream.h> //--------------------------------------------- ...
- QT+创建两个不相干的窗口实现一个显示一个不显示
因为两个窗口互不相干,所以需要重新创建一个窗口类subWidget subWidget.cpp文件 #ifndef SUBWIDGET_H #define SUBWIDGET_H #include & ...
- 【简●解】[SDOI2008] Sue的小球
[简●解][SDOI2008] Sue的小球 计划着刷\(DP\)题结果碰到了这样一道论文题,幸好不是太难. [题目大意] 口水话有点多,所以就直接放链接.传送门 [分析] 看到题首先联想到了曾经做过 ...
- luogu P2865 路障
https://www.luogu.org/problemnew/show/P2865 看到题解好多dijkstra,作为一名钟爱于spfa的蒟蒻看不下去了. 有些spfa要跑两边,代码量要曾长好多( ...
- consul无client模式
1.推consul的镜像到生产应用全部服务器. 每个consul的server模式的容器,都需要单独的物理服务器. 主节点:docker run -d --net=host --name=consul ...
- hdu4407Sum(容斥原理)
http://acm.hdu.edu.cn/showproblem.php?pid=4407 Sum Time Limit: 2000/1000 MS (Java/Others) Memory ...
- C/C++函数指针详解(转)
这两天在研究C/C++的函数指针,找到一篇讲解比较详细的博客,内容有点多,但是讲解得比较详细,适合初学者.特转之: 1. 无处不见的函数指针 使用函数指针可以设计出更优雅的程序,比如设计一个集 ...
- 第一讲:vcs simulation basic
要求: 1.complie a verilog/systemverilog design using vcs 2.simulate a verilog/systemverilog design vcs ...
- 3.3.3 使用 join 连接字段
join 命令可以将多个文件结合在一起,每个文件里的每条记录,都共享一个键值(key),键值指的是记录中的主字段,通常会是用户名称.个人姓氏.员工编号之类的数据.举例来说,两个文件,一个列出所 ...