记录:非法字符过滤 servletFilter,用户session验证servletFilter2010-02-03 11:19servletFilter 是非常强大的。
能过滤 页面提交过来的所有参数的内容,,例如用户可能会在表单中加入<script><script>这种字符,后果可是恐怖的。
现在发布一个非法字符转义的filter
JAVA CODE:
package com.jcxsw.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 javax.servlet.http.HttpServletResponse;
public class IllegalCharacterFilter implements Filter {
private static final long serialVersionUID = -5916500037685553487L;
public void destroy() {
// TODO Auto-generated method stub
}
@SuppressWarnings("unchecked")
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest servletrequest = (HttpServletRequest) request;
HttpServletResponse servletresponse = (HttpServletResponse) response;
String param = "";
String paramValue = "";
servletresponse.setContentType("text/html");
servletresponse.setCharacterEncoding("gbk");
servletrequest.setCharacterEncoding("gbk");
java.util.Enumeration params = request.getParameterNames();
while (params.hasMoreElements()) {
param = (String) params.nextElement();
String[] values = servletrequest.getParameterValues(param);//获得每个参数的value
for (int i = 0; i < values.length; i++) {
paramValue = values[i];
paramValue = paramValue.replaceAll("<", "<");
paramValue = paramValue.replaceAll(">", ">");
//这里还可以增加,如领导人 自动转义成****,可以从数据库中读取非法关键字。
values[i] = paramValue;
}
//把转义后的参数重新放回request中
request.setAttribute(param, paramValue);
}
//继续向下
arg2.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
// 初始化
}
}
web.xml code
<!-- 过滤非法字符 -->
<filter>
<filter-name>IllegalCharacterFilter</filter-name>
<filter-class>
com.jcxsw.filter.IllegalCharacterFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>IllegalCharacterFilter</filter-name>
<url-pattern>/*</url-pattern> <!--这种配置,可能连图片都会被过滤在内,它不支持不等于,与正则,不过可以在初始化中自己定义正则,通过filter来解析,把不符合的pass掉-->
</filter-mapping>
再发布一个验证session的filter
JAVA CODE:
package com.jcxsw.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 javax.servlet.http.HttpServletResponse;
import com.jcxsw.member.vo.MemberUser;
public class MemberAuthorityFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest httpReq = (HttpServletRequest) request;
HttpServletResponse httpRes = (HttpServletResponse) response;
if (request instanceof HttpServletRequest) {
MemberUser memberUser = (MemberUser)httpReq.getSession()
.getAttribute("memberUser");
if(memberUser == null){
httpRes.sendRedirect(httpReq.getContextPath()+"/member-user/login");
return;
}
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
web.xml CODE
<filter-name>MemberAuthorityFilter</filter-name>
<filter-class>
com.jcxsw.filter.MemberAuthorityFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>MemberAuthorityFilter</filter-name>
<url-pattern>/my/*</url-pattern><!--验证所有my目录下的-->
</filter-mapping>
分享到:
相关推荐
一、为什么要过滤特殊字符? 1. 防止SQL注入:特殊字符如单引号(')、双引号(")、分号(;)等在SQL语句中具有特定含义,如果不进行过滤,恶意用户可能会构造恶意输入,执行未授权的操作。 2. 避免XSS攻击:跨站脚本...
### Java过滤特殊字符的正则表达式知识点解析 #### 一、正则表达式简介 正则表达式是一种用于描述字符串模式的强大工具,在文本搜索、替换等操作中有着广泛的应用。Java 中提供了丰富的 API 来支持正则表达式的使用...
在IT行业中,过滤特殊字符和表情符号是一项常见的需求,特别是在处理用户输入数据或者进行文本解析时。这可以防止潜在的安全问题,比如SQL注入,也可以确保数据的格式正确性,提高用户体验。以下将从标题和描述中...
Java 正则表达式过滤特殊字符的正则表达式 Java 正则表达式是 Java 语言中的一种强大的文本处理工具,能够对字符串进行复杂的匹配、提取和替换操作。本文将详细介绍 Java 正则表达式在过滤特殊字符方面的应用。 ...
在PHP编程中,过滤特殊字符和HTML字符是确保数据安全的重要步骤。这主要涉及到防止SQL注入、XSS攻击等安全问题。以下是对标题和描述中所述知识点的详细说明: 1. **特殊字符过滤**: - 特殊字符通常包括SQL语句中...
标题《xss特殊字符拦截与过滤》以及描述《滤除content中的危险HTML代码,主要是脚本代码,滚动字幕代码以及脚本事件处理代码》提示我们这个文件内容是关于XSS(跨站脚本攻击)防护的编程实现。XSS攻击是指攻击者通过...
lua的过滤特殊字符表情
在JavaScript中,过滤特殊字符通常需要使用正则表达式来完成。正则表达式是一种强大的文本匹配工具,它能够定义一个搜索模式,用来匹配字符串中的字符组合。在处理用户输入的场景中,常常需要过滤掉输入内容中的特殊...
labview8.6编写的将字符串过滤成指定的字符串,包括 数值,大写,小写,十进制,16进制,8进制等
首先,为什么需要过滤生僻字和特殊字符呢? 1. **安全考虑**:一些特殊字符可能被用于SQL注入攻击或XSS(跨站脚本)攻击,过滤这些字符可以减少安全隐患。 2. **数据格式**:某些系统或数据库可能无法正确处理某些...
在android输入框中,经常会遇到用户输入奇奇怪怪的表情符号,在网上找了一圈。一般做法都是去匹配emoji字符。根本无法解决问题。换一个思路,只允许输入框中输入什么内容,具体见代码
1. 空白字符:指的是在计算机中用于分隔文字或命令的符号,它们在视觉上往往不起眼,但在文本处理中却能产生明显的影响。常见的空白字符包括空格、制表符(Tab)、换行符(LF,Unix系统中用`\n`表示)、回车符(CR,...
然而,在某些应用场景下,我们可能需要对用户的输入进行特定的限制或格式化,比如禁止输入特殊字符、空格或表情符号(emoji),同时控制输入的字符长度。`InputFilterEditTextDemo`项目就是为了实现这些功能而创建的...
这个程序实现去掉事先约定好的特殊字符,比如去掉文档中的所有“,”
过滤特殊字符通常是指去除字符串中的特殊符号,比如HTML中的标签、脚本注入字符等。在jQuery中,我们可以通过正则表达式结合字符串的`replace`方法来实现。 例如,若要过滤掉字符串中的一些常见特殊字符,可以使用...
4. **特殊字符过滤**:特殊字符可能会影响信息的准确读取,例如,一些非打印字符或者可能引起解析错误的字符。该实例具有自动过滤这些特殊字符的功能,保证了解析后的数据质量。 5. **物流行业应用**:在物流行业中...
在过滤特殊字符时,我们可以使用正则表达式中的`\W`元字符,它用于匹配任何非字母数字字符,等同于`[^a-zA-Z0-9_]`。然而,这个表达式并不能过滤掉所有的标点符号,尤其是中文标点。因此,我们需要编写一个更为详细...
在C#中,防止SQL注入攻击的一个重要方法是过滤SQL特殊字符。SQL注入是一种常见的网络安全威胁,通过在用户输入的数据中插入恶意SQL语句,攻击者可以操纵数据库,获取、修改或删除敏感信息。以下是一些C#中过滤SQL...
我就废话不多说了,大家还是直接看代码吧~ <Input v-model=”relatedWords” type=”textarea” placeholder=”请输入” @input=’verifyInput(formItem.relatedWords)’/> verifyInput(v){ ...
Lua语言实现特殊字符过滤,对于使用Lua开发移动端游戏的童鞋非常常用。代码亲测有效,附使用实例