当前位置: 首页 > news >正文

外贸免费开发网站模板乌苏市电力建设工程公司网站

外贸免费开发网站模板,乌苏市电力建设工程公司网站,小程序在线制作平台,中国建设质量协会网站问题描述#xff1a; 这个问题是在我写javaweb项目#xff0c;做敏感词过滤时出现的 需求是#xff1a;如果是由 getParameter(String s) 得到的数据#xff0c;可以直接修改value值#xff0c;将含有敏感词的部分替换为 *** request.getParameterMap() 方法返回一个包…问题描述 这个问题是在我写javaweb项目做敏感词过滤时出现的 需求是如果是由 getParameter(String s) 得到的数据可以直接修改value值将含有敏感词的部分替换为 *** request.getParameterMap() 方法返回一个包含 HTTP 请求参数的不可修改的映射。 这样设计的主要原因是为了保护请求参数的安全性和请求的一致性。HTTP 请求参数在发送到服务器端之前已经被解析和存储起来以供服务器端使用。如果允许修改参数值可能会导致以下问题 安全性问题允许直接修改请求参数可能会导致恶意用户进行参数篡改和数据注入攻击从而危害系统安全。 请求一致性问题由于请求参数在多个地方会被使用如果允许修改参数值可能会造成请求的不一致性导致系统无法准确处理请求。 因此为了保持请求参数的完整性和安全性request.getParameterMap() 方法返回的映射是不可修改的。 错误代码 if (method.getName().equals(getParameterMap)){Map map (Map) method.invoke(servletRequest, args);//通过getParameterMap获取到的map是不允许修改的if (map ! null){Set set map.keySet();for (Object o : set){String key (String) o;String[] value (String[]) map.get(key);//增强for一般不用来增加和删除for (String s : vocabularyList){if (value[0].contains(s)){ // value[0] value[0].replaceAll(s, ***);//这里内容没有修改原因应该也是不允许修改参数映射value[0] ***;map.put(key, value);//这里java.lang.IllegalStateException: 不允许修改锁定的参数映射}return map;}}}} 解决方案是用HashMap(Map m)重新new一个map在新的map中修改值并返回新的map if (method.getName().equals(getParameterMap)){Map old (Map) method.invoke(servletRequest, args);//增强返回值MapString, String[] values new HashMap(old); //获取返回值if (!values.isEmpty()){for (String key : values.keySet()){String[] value values.get(key);for (String str : vocabularyList){if (value[0].contains(str)){ //只取String[]的第一个值value[0] value[0].replaceAll(str, ***);values.put(key, value);}}}}return values;} 完整的代码 WebFilter(/*) public class SensitiveVocabularyFilter implements Filter {private final ArrayListString vocabularyList new ArrayListString();Overridepublic void init(FilterConfig filterConfig) throws ServletException{BufferedReader br null;try{//获取txt的文件位置String realPath filterConfig.getServletContext().getRealPath(/WEB-INF/classes/敏感词汇.txt);//读取文件br new BufferedReader(new FileReader(realPath));//将读取的每一行数据添加到vocabularyList中String line null;while ((line br.readLine()) ! null){vocabularyList.add(line);}}catch (Exception e){e.printStackTrace();}finally{try{assert br ! null;br.close();}catch (IOException e){e.printStackTrace();}}System.out.println(vocabularyList);}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException{//1.创建代理对象增强getParameter方法ServletRequest proxy_request (ServletRequest) Proxy.newProxyInstance(servletRequest.getClass().getClassLoader(), servletRequest.getClass().getInterfaces(), new InvocationHandler() {Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable{//执行处理逻辑,增强Parameter方法if (method.getName().equals(getParameter)){//如果我取到的参数值和敏感词汇中的相同则需要将这个值改为***String value (String) method.invoke(servletRequest, args);//如果获取的参数不为空if (value ! null){for (String vocabulary : vocabularyList){if (value.contains(vocabulary)){value value.replaceAll(vocabulary, ***);}}return value;}}//判断方法名是否是 getParameterMap/* if (method.getName().equals(getParameterMap)){Map map (Map) method.invoke(servletRequest, args);//通过getParameterMap获取到的map是不允许修改的if (map ! null){Set set map.keySet();for (Object o : set){String key (String) o;String[] value (String[]) map.get(key);//增强for一般不用来增加和删除for (String s : vocabularyList){if (value[0].contains(s)){value[0] value[0].replaceAll(s, ***);//java.lang.IllegalStateException: 不允许修改锁定的参数映射 // value[0] ***;map.put(key, value);//这里java.lang.IllegalStateException: 不允许修改锁定的参数映射}return map;}}}}*///判断方法名是否是 getParameterMap//解决new一个新的mapif (method.getName().equals(getParameterMap)){Map old (Map) method.invoke(servletRequest, args);//增强返回值MapString, String[] values new HashMap(old); //获取返回值if (!values.isEmpty()){for (String key : values.keySet()){String[] value values.get(key);for (String str : vocabularyList){if (value[0].contains(str)){ //只取String[]的第一个值value[0] value[0].replaceAll(str, ***);values.put(key, value);}}}}return values;}//判断方法名是否是 getParameterValueif (method.getName().equals(getParameterValues)){String[] value (String[]) method.invoke(servletRequest, args);//需要把敏感词汇txt每一行的字符都搞到一个字符串数组中if (value ! null){for (String str : vocabularyList){for (int i 0; i value.length; i){if (value[i].contains(str)){value[i].replaceAll(str, ***);}}}}return value;}return method.invoke(servletRequest, args);}});//2.放行filterChain.doFilter(proxy_request, servletResponse);}Overridepublic void destroy(){} }
http://wiki.neutronadmin.com/news/12411/

相关文章:

  • 网站建设xml下载游戏网站建设的目的
  • 求网站备案照片商城系统网站模板免费下载
  • 政务服务 网站 建设方案做网站1000以下哪家好
  • 广元网站建设seo优化营销制作设计设置wordpress文章图片不显示
  • 洛阳西工区做网站哪家好微信公众号内置手机网站
  • 建设网站第一步宁远做网站
  • 做网站商城需要什么软件博客网站建设设计报告
  • 网站制作属于什么专业门户网站兴化建设局 金
  • 网站开发语言为 php帮朋友免费做网站
  • 湖北皇奥建设工程有限公司网站新浪微博网页版
  • 企业网站建设需要考虑内容爱站网新网址是多少
  • 济南外贸网站制作深圳广告设计公司网站
  • 网站建设落地页北京住建个人证书查询网
  • 营销型网站跟云网站阿里巴巴国际站做2个网站有用
  • 青岛网站建设团队电脑优化软件推荐
  • 广州网站建设比较好的公司在哪可以找到做网站的
  • 网站建设与优化推广方案手机做任务网站
  • 中国建设劳动协会网站定制型网站建设平台
  • php网站开发图文教程小程序登录跳转
  • php做网站最容易网站没被收录怎么办
  • 深圳上市公司全部名单杭州seo网站
  • 哪些网站论坛做推广好河南网站建设yipinpai
  • 网站建设方案书生鲜重庆建设传动科技有限公司
  • 哈尔滨手机网站建设价格邢台seo技术
  • 科技风格设计网站中山做网站公司
  • qingdao城乡住房建设厅网站大连模板网站制作电话
  • 建立个人网站怎么赚钱cms系统复杂权限
  • 网站图片设计怎样才能高大上辽阳网站建设公司
  • 郑州个人网站建设装修全包
  • 想自己做网站需要会什么品牌整合营销传播方案