`
chengyue2007
  • 浏览: 1480644 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

java 过滤用户提交表单非法字符

    博客分类:
  • java
阅读更多

一。写一个过滤器

代码如下:

package com.liufeng.sys.filter;

import java.io.IOException;
import java.io.PrintWriter;

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;
/**
 *
 * @author liufeng 2009-08-18
 *
 */
public class IllegalCharacterFilter implements Filter {
 
 private String[] characterParams = null;
 private boolean OK=true;
 
 public void destroy() {
  // TODO Auto-generated method stub

 }
 /**
  * 此程序块主要用来解决参数带非法字符等过滤功能
  */
 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain arg2) throws IOException, ServletException {
 
  HttpServletRequest servletrequest = (HttpServletRequest) request;
  HttpServletResponse servletresponse = (HttpServletResponse) response; 
  boolean status = false;  
   java.util.Enumeration params = request.getParameterNames();
   String param="";
   String paramValue = "";
   servletresponse.setContentType("text/html");
   servletresponse.setCharacterEncoding("utf-8");
   while (params.hasMoreElements()) {
    param = (String) params.nextElement();
    String[] values = request.getParameterValues(param);
    paramValue = "";
    if(OK){//过滤字符串为0个时 不对字符过滤
    for (int i = 0; i < values.length; i++)
      paramValue=paramValue+values[i];
    for(int i=0;i<characterParams.length;i++)
     if (paramValue.indexOf(characterParams[i]) >= 0) {
      status = true;
      break;
     }
    if(status)break;
    }
   }
//   System.out.println(param+"="+paramValue+";");
   if (status) {
    PrintWriter out = servletresponse.getWriter();
    out
      .print("<script language='javascript'>alert(\"您提交的相关表单数据字符含有非法字符。如:\\\"'\\\".\");location.href('"
        + servletrequest.getRequestURL()
        + "');</script>");
   }else
   arg2.doFilter(request, response);
 
 }

 public void init(FilterConfig config) throws ServletException {
  if(config.getInitParameter("characterParams").length()<1)
   OK=false;
  else
  this.characterParams = config.getInitParameter("characterParams").split(",");
 }

}

 

二。在web.xml文件中加入如下内容:

<!-- 非法字符过滤器 -->
 <filter>
  <filter-name>IllegalCharacterFilter</filter-name>
  <filter-class>
   com.liufeng.sys.filter.IllegalCharacterFilter
  </filter-class>
  <init-param>
   <param-name>characterParams</param-name>
   <param-value>',@</param-value><!-- 此处加入要过滤的字符或字符串,以逗号隔开 -->
  </init-param>
 </filter>
 <filter-mapping>
  <filter-name>IllegalCharacterFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

 

重启你的服务器就OK了。

这样,增加此过滤器后能提高网站的安全,防止SQL注入,防止跨站脚本XSS等。

分享到:
评论

相关推荐

    字符过滤字符过滤字符过滤

    例如,在网页表单提交时,需要过滤特殊字符以避免恶意代码的执行;在数据库存储时,要过滤掉可能导致数据污染或结构破坏的字符;在内容审核中,可能涉及到敏感词的过滤,以符合法规要求。 "字符过滤字符过滤"标签...

    基于KDS的非法字符检测器

    例如,当用户通过网页表单提交数据时,服务器端的KDS非法字符检测器会在数据入库前进行检查,以防止非法字符污染数据库。 此外,为了提高用户体验,非法字符检测器还可以实现实时反馈,即在用户输入时即时提醒。这...

    史上最全Java表单验证封装类

    1. **字符串过滤**:`stringFilter`方法用于过滤掉特定的非法字符。 2. **特殊字符检测**:`isContainsSpecialChar`方法检查字符串中是否包含特定的特殊字符。 3. **HTML转纯文本**:`htmltoText`方法可以将包含HTML...

    JavaScript过滤SQL注入字符

    例如,一个简单的登录表单如果没有进行适当的验证,攻击者可以输入"username' OR '1'='1 --"这样的字符串,使所有用户的登录验证都能通过。 二、JavaScript前端过滤 虽然前端验证不能替代后端的安全措施,但可以在...

    Java验证码

    Java验证码是一种广泛应用于Web开发中的安全机制,主要目的是防止恶意自动化程序(如机器人或爬虫)对网站进行非法操作,例如频繁提交表单、刷票等。在Java中实现验证码通常涉及图像处理、随机数生成以及哈希算法等...

    注册网页用java 做的简单的几个

    2. 验证用户输入:确保所有字段都有有效值,并过滤非法字符。 3. 密码安全:使用安全的哈希算法,并添加随机盐值。 4. 防止跨站脚本攻击(XSS):对用户输入进行转义或过滤。 在实际开发中,可能还会涉及用户认证、...

    web开发中必不可少的过滤器

    本篇文章将深入探讨“web开发中必不可少的过滤器”,以及如何利用过滤器解决乱码及非法字符串转换的问题。 首先,让我们了解过滤器的基本概念。在Java Servlet规范中,过滤器是通过实现javax.servlet.Filter接口来...

    java 验证码 框架

    Java验证码框架是Web开发中用于安全验证的重要工具,主要用于防止恶意自动化的机器人或者爬虫进行非法操作,如注册、登录等。在J2EE环境中,验证码框架能够为开发者提供便捷的方式来实现这一功能。"附带example比较...

    ASP用户注册代码

    此段脚本的功能在于确保用户在提交表单之前,各项输入内容均符合一定的格式要求,避免因错误的数据格式而引发的后端处理问题。 ### 一、整体框架理解 首先,我们看到这段代码被嵌入到了一个HTML表单中,通过`...

    jquery过滤特殊字符’,防sql注入的实现方法

    // 过滤非法字符的函数 function stripscript(s) { var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].&lt;&gt;/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]"); var rs = ""; for (var i = 0; i ; i++)...

    JAVA安全编码手册.pdf

    在Java开发中,用户输入通常通过表单提交给服务器端,然后被拼接到数据库查询中。如果应用程序未能正确过滤或转义这些输入,攻击者就可能通过输入特定构造的SQL片段,破坏原本的SQL逻辑,执行非法的数据库操作。例如...

    指定特殊字符不能使用

    这里先检查当前字符是否为非法字符,再根据ASCII码判断字符类型并更新计数器和索引。 5. **验证规则**: ```javascript if (numberCount == 0 || (numberCount == 1 && (numberIndex == 0 || numberIndex == str...

    java验证码

    验证码在IT领域中是一种常见的安全机制,主要用于防止自动机器人或者恶意程序进行非法操作,比如注册、登录、提交表单等。在Java Web开发中,我们可以使用多种方式来实现验证码功能。这里,我们主要讨论与"java...

    ASCII 字符代码图表,编辑框限制字符功能的例程2.rar

    这种功能常见于各种软件和网页表单,以确保输入数据的格式正确,防止非法字符的输入。例程可能包括以下步骤: 1. 检查输入:当用户在编辑框中输入字符时,程序会实时或在提交前检查每个字符的ASCII码值。 2. 过滤非...

    servlet进行用户登录代码

    另外,对于用户输入的数据,应当进行校验和过滤,防止非法字符或恶意代码的提交。在登录失败的情况下,不应显示具体的错误信息(如“用户名不存在”),以避免暴露系统的敏感信息。 至于提供的压缩包文件`servlet_...

    java'文本域额验证

    它不仅能够提高用户体验,还可以有效地防止用户提交非法或错误的数据,从而减少服务器端的压力以及可能的安全风险。文本域验证作为表单验证的一部分,主要针对用户在文本输入框中输入的数据进行检查。 ### 2. ...

    Struts+JDBC-Crud曾删改查,用户管理程序

    例如,对用户输入的数据进行过滤和校验,防止非法字符或恶意代码的注入;对用户的密码进行哈希加盐处理,保护用户隐私。 总的来说,"Struts+JDBC-Crud曾删改查,用户管理程序"是一个典型的Java Web应用,它整合了...

    springmvc+oracle实现用户登录和用户管理

    - 验证和过滤用户输入:对用户提交的数据进行合法性检查,防止非法字符和恶意代码。 8. **前端展示**: - 使用HTML、CSS和JavaScript构建用户界面,可能配合Bootstrap等前端框架提升美观度和响应式布局。 - 前后...

Global site tag (gtag.js) - Google Analytics