过滤器过滤特殊字符无法获取到参数

代码如下:

 $.ajax({
                url: url,
                type: 'post',
                data: o,
                cache: false,
                success: function (text) {
                    console.dir(text);
                    CloseWindow("save");
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert(jqXHR.responseText);
                    CloseWindow();
                }
            });

我使用ajax方式提交,post提交方式,手动封装data。
后端接收如下:

 @At("/updateProductCfg")
    public ExecuteState updateProductCfg(@Param("..") CmsLoanProduct param,HttpSession session) {
        System.out.print(Json.toJson(param));
        UserObject user=(UserObject)session.getAttribute("userObject");
        param.setUsrModify(user.getUserId());
        param.setOrgModify(user.getUserOrgName());
        param.setDatModify(new Timestamp(System.currentTimeMillis()));
        ExecuteState state = productCfgManagerBiz.updateProductCfg(param);
        return state;
    }

现在如果在param参数中有特殊字符,那么我将定义
web.xml,代码如下

  <filter>
        <filter-name>XssFilter</filter-name>
        <filter-class>com.ifs.frame.filter.XssFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>XssFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

拦截器代码

 public class XssFilter implements Filter {

    FilterConfig filterConfig = null;
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException,
            ServletException {
            XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper(
            (HttpServletRequest) request);
            filterChain.doFilter(xssRequest, response);

    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
    }

    @Override
    public void destroy() {
        this.filterConfig=null;
    }

}

XssHttpServletRequestWrapper代码

 public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
    public XssHttpServletRequestWrapper(HttpServletRequest servletRequest) {
        super(servletRequest);
    }
    public String[] getParameterValues(String parameter) {
      String[] values = super.getParameterValues(parameter);
      if (values==null)  {
                  return null;
          }
      int count = values.length;
      String[] encodedValues = new String[count];
      for (int i = 0; i < count; i++) {
                 encodedValues[i] = cleanXSS(values[i]);
       }
      return encodedValues;
    }
    public String getParameter(String parameter) {
          String value = super.getParameter(parameter);
          if (value == null) {
                 return null;
                  }
          return cleanXSS(value);
    }
    public String getHeader(String name) {
        String value = super.getHeader(name);
        if (value == null)
            return null;
        return cleanXSS(value);
    }   
    private String cleanXSS(String value) {
        value = value.replaceAll("&", "&amp;");
        value = value.replaceAll("#", "&#35;");
        value = value.replaceAll("<", "&lt;").replaceAll(">", "&gt;");
        value = value.replaceAll("\"", "&#92;");
        value = value.replaceAll("'", "&#39;");
        return value;
    }

现在这些代码我确无法获取到data中的值,也无法转换,各位有什么好的解决方法吗?

以我现在所知道的是参数未封装到HttpServletRequest里面导致的。但我现在无法在来修改源码了,也只有通过写过滤器来想办法

0

1个回答

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Struts过滤器过滤某些字符
(1)天朝的规矩做项目的时候可能需要过滤某些特定的字符,在更多的用途是安全的考虑,下边就是一个过滤字符的简单案例; (2)过滤器代码如下: package com.lc.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import j
Filter非法字符过滤器
package com.my.web.filter; import java.io.IOException; import java.util.Enumeration; import java.util.Iterator; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax....
filter过滤器过滤特殊字符
主管提出一个需求,
javeWeb springMvc获取到的参数附带特殊符号,接收后被转义
javeWeb springMvc获取到的参数附带特殊符号,接收后被转义 https://blog.csdn.net/yejingxuan01/article/details/78802340
filter过滤器实现特殊字符转义
  web.xml &amp;lt;!-- 特殊字符转义或转换 --&amp;gt; &amp;lt;filter&amp;gt; &amp;lt;filter-name&amp;gt;XssFilter&amp;lt;/filter-name&amp;gt; &amp;lt;filter-class&amp;gt;cn.zsmy.interceptor.XssFilter&amp;lt;/filter-class&amp;gt; ...
SpringMVC 过滤参数的非法字符
import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestW
java 过滤器(过滤客户端表单特殊字符、服务器端特殊字符、以及编码过滤)
package com.lk.test; import java.io.CharArrayWriter; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletRe
用过滤器过滤全站非法字符
package cn.lfd.web.filter; import java.io.IOException; import java.util.Arrays; import java.util.List; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfi
Java Web对前台传过来参数中的敏感字符进行过滤替换
public static String filterHtml(String input){ if(input == null){ return null; } if(input.length() == 0){ return input; } input = input.replaceAll("&", "&"); input = input.repl
利用简单的过滤器 过滤特殊字符实现 防止XSS攻击
web.xml配置文件  XSSFilter com.neusoft.common.filter.XSSFilter XSSFilter /* package com.neusoft.common.filter; import java.io.IOException; import javax.servlet.Fi
利用简单的过滤器 过滤特殊字符实现 防止XSS攻击
利用简单的过滤器 过滤特殊字符实现 防止XSS攻击 web.xml配置文件  [html] view plain copy print?  filter>    filter-name>XSSFilterfilter-name>    filter-class>com.neusoft.common.filter.XSSFilterfil
URL请求后台获取不到特殊字符的参数
URL特殊字符需转义 1、空格换成加号(+) 2、正斜杠(/)分隔目录和子目录 3、问号(?)分隔URL和查询 4、百分号(%)制定特殊字符 5、#号指定书签 6、&号分隔参数 如果请求的URL中含有 %- _ . ! ~ * ' ( ) 等转义字符串,后台转义字符的原因:  如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不
过滤器过滤用户输入的非法字符
过滤器过滤用户输入的非法字符,如“<>” “%” “+”等需要的两个类XssFilter.java和XssHttpServletRequestWrapper.java
springboot返回内容特殊符号处理
需求说明 根据需求部分字段内容为正则表达式,包含特殊符号’&amp;amp;lt;’,’&amp;amp;gt;等,导致html解析错误,字段显示错误或显示部分。 对特殊字段需要过滤,如:用户密码等不应该返回到前端 解决方案 可以在单个方法中对数据进行处理,但是这样会增加代码复杂度,具有侵入性 使用切面思想,对返回json进行统一处理 代码 创建注解 package com.pactera.ai.manage.com...
获取ASP.NET下载状态
由于HTTP的无状态协议,导致无法获取到是否已开始下载的情况(当然,只能获取到已开始执行了下载)
TP5 无法获取到GET参数(apache)
这种情况很可能是和服务器配置相关的。 例如本人的情况就是下载了一个新的项目,但是里面的.htaccess文件有问题导致无法获取到get参数, 原来的是这样: &amp;lt;IfModule mod_rewrite.c&amp;gt; Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME...
struts2 action为什么无法获取到参数
ActionContext context = ActionContext.getContext(); rn HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST); rn request.setAttribute("user", username);rn System.out.println(request.getAttribute("user")+"ssssssssssssssss");rn System.out.println(request.getAttribute("password")+"ssssssssssssssss");rn在action中没问题rnstrutsrnrn rn MyJsp.jsprn rn rn在页面中我要获取userrn<%request.getAttribute("user"); %>rn但就是不行
Servlet过滤器(非法字符审核案例)
1、过滤器     (1)什么是过滤器         servlet规范当中定义的一种特殊的组件,用来拦截容器的调用过程并进行相应的处理。     (2)如何写一个过滤器         step1,写一个java类,实现Filter接口。         step2,在doFilter方法,编写拦截处理逻辑。         step3,在web.xml文件里面,配置过滤器(让容器
无法获取到Cookie
有两个项目的帐号的登录状态需要同步。所以使用Cookie来保持登录状态,对方是Java平台,由那一方写入cookie,ASP.NET来读,但是我这边却怎么也读取不到。rn[code=C#]rnstring value = string.Empty;rnif (HttpContext.Current.Request.Cookies["Mall_IsLogin"] != null)rnrnvalue = HttpContext.Current.Request.Cookies["Mall_IsLogin"].Value;rnif (!string.IsNullOrEmpty(value))rnrn //需要执行的代码rnrn[/code]rn以上就是获取cookie的代码。rn后来我又使用单独的一个项目来调试。rn[code=C#]rn protected void Button1_Click(object sender, EventArgs e)rn rn HttpCookie objCookie = new HttpCookie("Mall_IsLogin");rn objCookie.Value = "高丽佳33";rn DateTime dtExpiry = DateTime.Now.AddDays(10);rn objCookie.Expires = dtExpiry;rn objCookie.Domain = ".h2h.cn";rnrn if (this.Response.Cookies["Mall_IsLogin"] == null)rn rn Response.Cookies.Add(objCookie);rn rn elsern rn this.Response.Cookies.Remove("Mall_IsLogin");rn this.Response.Cookies.Set(objCookie);rn rn rn protected void Button2_Click(object sender, EventArgs e)rn rn if (Request.Cookies["Mall_IsLogin"] != null)rn rn string v = Request.Cookies["Mall_IsLogin"].Value;rn Button2.Text = v;rn rn rn[/code]rn用这个,也得不到Cookie。是写入的问题,还是读取的问题?求大虾帮忙!
java中将实体的值传输到mybatise后无法获取到对象中属性的值
可能原因:service与dao未在系统启动时spring未能将相应的类注入 解决方法:手动获取类   public static T getBean(Class requiredType) {             return applicationContext.getBean(requiredType);     }
Java过滤器过滤特殊字符
package util; import java.io.IOException; import java.util.Collection; import java.util.Iterator; import java.util.Map; import javax.servlet.Filter; import javax.servlet.FilterChain; import jav
spring mvc获取到的参数附带特殊符号,接收后被转义的处理方法
WEB开发时,在前端通过get / post 方法传递参数的时候  如果实参附带特殊符号,后端接收到的值中特殊符号就会被转义例如该请求: http://localhost:10001/demo/index.do?name=张三(1)注:中文()不会出现此种情况      后台就收到的实际 name 值为:   张三&amp;amp;#40;1&amp;amp;#41;&amp;amp;#40;其实为html中  (  符...
URL出现特殊符号,后台无法正确获取参数
Url出现了有+,空格,/,?,%,#,&amp;,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,抑或是造成不能正常下载文件(作为Download Url时候),如何是好?解决办法:就是需要将这些字符转化成服务器可以识别的字符;但是为何Url中有这些字符就会出现问题呢?这就得涉及到URL编码与解码问题了。 URL编码与解码 一般来说,URL只能使用英文字母、阿拉伯数字和某些标点符号,...
慢日志查询工具
相比于mysqldumpslow采集的参数更详细,获取到更多关于数据库服务器的使用情况
获取文件版本号
根据传入的文件名参数获取到该文件(包括exe、dll等文件)的版本号。
POST请求,内容过多时,后台无法获取所有数据
发现用post提交表单时,参数值长度达到大概1900000时,后台就得不到参数值 跟tomcat的设置也有关系,tomcat server.xml 设置了maxPostSize=&quot;1024&quot; 这个参数,只允许表单上传1m的数据。 &amp;lt;Connector port=&quot;80&quot; protocol=&quot;HTTP/1.1&quot; connectionTimeout=&quot;200...
ajax的使用
ajax的使用,通过地址请求的方式传参数并获取到返回的参数,同时解析返回的json格式的参数。
如何用jsp+servlet+fliter实现非法字符过滤
jsp过滤器实现非法字符过滤
通过httpclient获取到JSON数据,展示到ListView
通过httpclient获取到JSON数据,展示到ListView通过httpclient获取到JSON数据,展示到ListView
javeWeb springMvc获取到的参数附带特殊符号,接收后被转义
WEB开发时,在前端通过get / post 方法传递参数的时候 如果实参附带特殊符号,后端接收到的值中特殊符号就会被转义 例如该请求:http://localhost:10001/demo/index.do?name=张三(1) 注:中文()不会出现此种情况 后台就收到的实际 name 值为: 张三&amp;#40;1&amp;#41; &amp;#40;其实为htm...
qml窗口句柄的获取以及QWidget嵌入到QML窗口
获取到qml窗口句柄的方法,以及怎样将QWidget嵌入到获取到的qml窗口中
url 传递参数(特殊字符) 解决方法
url 传递参数(特殊字符) 解决方法在做网页的时候,偶尔会遇到url被截断的情况,一般是出现在有参数的url中,比如www.baidu.com?a=1&b=2,有时候就会出现url只传递了www.baidu.com?a=1后边的url被截断了,出现这种情况一般最有效的解决方案是把&符号用%26替换,这样www.baidu.com?a=1&b=2就变成了www.baidu.com?a=1%26b=2
邮箱不能提取附件解决办法
罗家齐----最近十分恼火,所有邮箱都不能提取附件,IE chrome浏览器都不行,终于找到解决办法了,,,不多说。分享啦。。。。 1、可能是IE浏览器的设置导致。可以尝试该操作:打开IE浏览器,选择菜单中工具--internet选项--高级标签里,找到“浏览”选项,将“始终以 UTF-8 发送 URL”选项取消,再选择“确定”保存设置 阅读(0) |评论(0) | 编辑
java处理url中的特殊字符
java处理url中的特殊字符(如&amp;amp;,%...) URL(Uniform Resoure Locator,统一资源定位器)是Internet中对资源进行统一定位和管理的标志。 一个完整的URL包括如下内容: 1.         应用协议名称,包括http,ftp,file等标志 2.         资源定位,是由(.)分割等网络路径 3.         端口号...
java 问题请教
树获取到表格
WGS84TOGCJ02
CLLocationManager获取到的坐标转换
SpringBoot设置Filter过滤请求参数
在使用springBoot进行项目开发时,遇到的需求是需要对用户上传的数据进行过滤,比如去除“ 自己在做的时候想到了两个办法去实现 1.写一个过滤方法,在有数据操作的地方调用方法进行过滤,将过滤以后的字符串重新赋值。在百度中找到了一个前辈写的blog,觉得很不错就直接拿过来用了。 public static String StringFilterUntil(String str)
iOS中webView添加参数后不能加载
在开发过程中,URL通常会带各种参数,如果参数中带有中文或者其他特殊字符,则需要对这个URL字符串进行转义操作:urlStringData= [urlStringData stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; ...
使用ReflectionTestUtils解决依赖注入
概述 当使用junit来测试Spring的代码时,为了减少依赖,需要给对象的依赖,设置一个mock对象,但是由于Spring可以使用@Autoware类似的注解方式,对私有的成员进行赋值,此时无法直接对私有的依赖设置mock对象。可以通过引入ReflectionTestUtils,解决依赖注入的问题。 使用简介 在Spring框架中,可以使用注解的方式如:...
过滤器屏蔽非法字符
服务器启动时先进行所有拦截器的初始化 要用FilterChain,将请求继续向下转发。 chain.doFilter(request,response) ;没有就无法向下执行 中文过滤,统一编码方式 硬编码不好,用filterConfig 读取web.xml配置文件里面的信息 可以用 getInitParameterNames 获取到web.xml里所有的配置信息 Enumberation ...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 人工智能除获机构扎堆看 这份深度学习课程笔记获吴恩达点赞