`
独善其身008
  • 浏览: 171406 次
  • 性别: Icon_minigender_2
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

过滤特殊字符

阅读更多
记录:非法字符过滤 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("<", "&lt");
     paramValue = paramValue.replaceAll(">", "&gt");

    //这里还可以增加,如领导人 自动转义成****,可以从数据库中读取非法关键字。
     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>

分享到:
评论

相关推荐

    JS 过滤特殊字符

    一、为什么要过滤特殊字符? 1. 防止SQL注入:特殊字符如单引号(')、双引号(")、分号(;)等在SQL语句中具有特定含义,如果不进行过滤,恶意用户可能会构造恶意输入,执行未授权的操作。 2. 避免XSS攻击:跨站脚本...

    Java过滤特殊字符的正则表达式.doc

    ### Java过滤特殊字符的正则表达式知识点解析 #### 一、正则表达式简介 正则表达式是一种用于描述字符串模式的强大工具,在文本搜索、替换等操作中有着广泛的应用。Java 中提供了丰富的 API 来支持正则表达式的使用...

    过滤特殊字符及表情符

    在IT行业中,过滤特殊字符和表情符号是一项常见的需求,特别是在处理用户输入数据或者进行文本解析时。这可以防止潜在的安全问题,比如SQL注入,也可以确保数据的格式正确性,提高用户体验。以下将从标题和描述中...

    java正则表达式 过滤特殊字符的正则表达式

    Java 正则表达式过滤特殊字符的正则表达式 Java 正则表达式是 Java 语言中的一种强大的文本处理工具,能够对字符串进行复杂的匹配、提取和替换操作。本文将详细介绍 Java 正则表达式在过滤特殊字符方面的应用。 ...

    PHP 过滤特殊字符和HTML字符对照表

    在PHP编程中,过滤特殊字符和HTML字符是确保数据安全的重要步骤。这主要涉及到防止SQL注入、XSS攻击等安全问题。以下是对标题和描述中所述知识点的详细说明: 1. **特殊字符过滤**: - 特殊字符通常包括SQL语句中...

    xss特殊字符拦截与过滤

    标题《xss特殊字符拦截与过滤》以及描述《滤除content中的危险HTML代码,主要是脚本代码,滚动字幕代码以及脚本事件处理代码》提示我们这个文件内容是关于XSS(跨站脚本攻击)防护的编程实现。XSS攻击是指攻击者通过...

    过滤特殊字符表情

    lua的过滤特殊字符表情

    js中过滤特殊字符的正则表达式

    在JavaScript中,过滤特殊字符通常需要使用正则表达式来完成。正则表达式是一种强大的文本匹配工具,它能够定义一个搜索模式,用来匹配字符串中的字符组合。在处理用户输入的场景中,常常需要过滤掉输入内容中的特殊...

    LABVIEW多功能 过滤特殊字符

    labview8.6编写的将字符串过滤成指定的字符串,包括 数值,大写,小写,十进制,16进制,8进制等

    PHP 过滤生僻字和特殊字符

    首先,为什么需要过滤生僻字和特殊字符呢? 1. **安全考虑**:一些特殊字符可能被用于SQL注入攻击或XSS(跨站脚本)攻击,过滤这些字符可以减少安全隐患。 2. **数据格式**:某些系统或数据库可能无法正确处理某些...

    php过滤所有的空白字符(空格、全角空格、换行等)

    1. 空白字符:指的是在计算机中用于分隔文字或命令的符号,它们在视觉上往往不起眼,但在文本处理中却能产生明显的影响。常见的空白字符包括空格、制表符(Tab)、换行符(LF,Unix系统中用`\n`表示)、回车符(CR,...

    android 过滤输入法特殊字符

    在android输入框中,经常会遇到用户输入奇奇怪怪的表情符号,在网上找了一圈。一般做法都是去匹配emoji字符。根本无法解决问题。换一个思路,只允许输入框中输入什么内容,具体见代码

    InputFilterEditTextDEmo 过滤特殊字符,空格,emoji的EditText

    然而,在某些应用场景下,我们可能需要对用户的输入进行特定的限制或格式化,比如禁止输入特殊字符、空格或表情符号(emoji),同时控制输入的字符长度。`InputFilterEditTextDemo`项目就是为了实现这些功能而创建的...

    c语言实现去掉特殊字符

    这个程序实现去掉事先约定好的特殊字符,比如去掉文档中的所有“,”

    jQuery过滤特殊字符及JS字符串转为数字

    过滤特殊字符通常是指去除字符串中的特殊符号,比如HTML中的标签、脚本注入字符等。在jQuery中,我们可以通过正则表达式结合字符串的`replace`方法来实现。 例如,若要过滤掉字符串中的一些常见特殊字符,可以使用...

    短信内容分解实例,支持10~14位动态数字单号,支持全角内容短信,可过滤特殊字符

    4. **特殊字符过滤**:特殊字符可能会影响信息的准确读取,例如,一些非打印字符或者可能引起解析错误的字符。该实例具有自动过滤这些特殊字符的功能,保证了解析后的数据质量。 5. **物流行业应用**:在物流行业中...

    一行Python代码过滤标点符号等特殊字符

    在过滤特殊字符时,我们可以使用正则表达式中的`\W`元字符,它用于匹配任何非字母数字字符,等同于`[^a-zA-Z0-9_]`。然而,这个表达式并不能过滤掉所有的标点符号,尤其是中文标点。因此,我们需要编写一个更为详细...

    C#实现过滤sql特殊字符的方法集合

    在C#中,防止SQL注入攻击的一个重要方法是过滤SQL特殊字符。SQL注入是一种常见的网络安全威胁,通过在用户输入的数据中插入恶意SQL语句,攻击者可以操纵数据库,获取、修改或删除敏感信息。以下是一些C#中过滤SQL...

    vue.js 输入框输入值自动过滤特殊字符替换中问标点操作

    我就废话不多说了,大家还是直接看代码吧~ &lt;Input v-model=”relatedWords” type=”textarea” placeholder=”请输入” @input=’verifyInput(formItem.relatedWords)’/&gt; verifyInput(v){ ...

    Lua实现特殊字符过滤.lua

    Lua语言实现特殊字符过滤,对于使用Lua开发移动端游戏的童鞋非常常用。代码亲测有效,附使用实例

Global site tag (gtag.js) - Google Analytics