返回顶部
首页 > 资讯 > 精选 >java过滤特殊字符的操作方法
  • 399
分享到

java过滤特殊字符的操作方法

2023-06-20 12:06:05 399人浏览 泡泡鱼
摘要

本篇内容介绍了“java过滤特殊字符的操作方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!XSS ,全名:cross-site scrip

本篇内容介绍了“java过滤特殊字符的操作方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

XSS ,全名:cross-site scripting(跨站点脚本),是当前 WEB 应用中最危险和最普遍的漏洞之一。攻击者尝试注入恶意脚本代码(常js脚本)到受信任的网站上执行恶意操作,用户使用浏览器浏览含有恶意脚本页面时,会执行该段恶意脚本,进而影响用户(比如关不完的网站、盗取用户的 cookie 信息从而伪装成用户去操作)等等。

它与 sql 注入很类似,同样是通过注入恶意指令来进行攻击。但 SQL 注入是在服务器端上执行的,而 XSS 攻击是在客户端上执行的,这点是他们本质区别。

其实,个人感觉对于xss攻击不必区分究竟是反射型XSS、存储型XSS还是DOM Based XSS,只需要知道如何去防护。而防护的最有效的措施就是过滤,对前端页面提交到后台的内容进行过滤。具体如下:

1.解决方法一

拦截所有的请求参数,对请求参数中包含特殊字符'<‘或'>'进行过滤。

package com.haier.openplatfORM.srm.base.filter;import java.io.IOException;import java.util.Iterator;import java.util.Map;import java.util.Set;import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.Http.httpservletRequest;import javax.servlet.http.HttpServletRequestWrapper;import javax.servlet.http.HttpServletResponse;import org.springframework.web.filter.OncePerRequestFilter;public class StringFilter extends OncePerRequestFilter{@Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)throws ServletException, IOException {chain.doFilter(new StringFilterRequest((HttpServletRequest)request), response);}}class StringFilterRequest extends HttpServletRequestWrapper {public StringFilterRequest(HttpServletRequest request) {super(request);}@Overridepublic String getParameter(String name) {// 返回值之前 先进行过滤return filterDangerString(super.getParameter(name));}@Overridepublic String[] getParameterValues(String name) {// 返回值之前 先进行过滤String[] values = super.getParameterValues(name);if(values==null){return null;}for (int i = 0; i < values.length; i++) {values[i] = filterDangerString(values[i]);}return values;}@Overridepublic Map getParameterMap() {Map keys = super.getParameterMap();Set set = keys.entrySet();Iterator iters = set.iterator();while (iters.hasNext()) {Object key = iters.next();Object value = keys.get(key);keys.put(key, filterDangerString((String[]) value));}return keys;}public String filterDangerString(String value) {if (value == null) {return null;}//        value = value.replaceAll("\\{", "{");value = value.replaceAll("<", "&lt;");value = value.replaceAll(">", "&gt;");//        value = value.replaceAll("\t", "    ");//        value = value.replaceAll("\r\n", "\n");//        value = value.replaceAll("\n", "<br/>");//        value = value.replaceAll("'", "&#39;");//        value = value.replaceAll("\\\\", "&#92;");//        value = value.replaceAll("\"", "&quot;");//        value = value.replaceAll("\\}", "﹜").trim();return value;}public String[] filterDangerString(String[] value) {if (value == null) {return null;}for (int i = 0; i < value.length; i++) {String val = filterDangerString(value[i]);value[i] = val;}return value;}}

web.xm中的过滤器配置:

 <filter>  <filter-name>StringFilter</filter-name>  <filter-class>com.xxx.base.filter.StringFilter</filter-class> </filter>  <filter-mapping>  <filter-name>StringFilter</filter-name>  <url-pattern>public class htmlUtils {public static String filterHTMLTag(String htmlStr) {    //定义HTML标签的正则表达式     String reg_html="<[^>]+>";     Pattern pattern=Pattern.compile(reg_html,Pattern.CASE_INSENSITIVE);     Matcher matcher=pattern.matcher(htmlStr);     htmlStr=matcher.replaceAll(""); //过滤html标签     return htmlStr;}public static String filterTagByName(String htmlStr,String tagName) {    String reg_html="<"+tagName+"[^>]*?>[\\s\\S]*?<\\/"+tagName+">";    Pattern pattern=Pattern.compile(reg_html,Pattern.CASE_INSENSITIVE);     Matcher matcher=pattern.matcher(htmlStr);     htmlStr=matcher.replaceAll(""); //过滤html标签     return htmlStr;}public static String filterHTMLTagInStyle(String htmlStr) {    String reg_html="style=('|\")(.*?)('|\")";    Pattern pattern=Pattern.compile(reg_html,Pattern.CASE_INSENSITIVE);     Matcher matcher=pattern.matcher(htmlStr);     htmlStr=matcher.replaceAll(""); //过滤html标签     return htmlStr;}public static String replayFace(String htmlStr) {    String reg_html="\\[em_\\d{1,}\\]";    Pattern pattern =Pattern.compile(reg_html,Pattern.CASE_INSENSITIVE);     Matcher matcher=pattern.matcher(htmlStr);    if(matcher.find()) {        matcher.reset();        while(matcher.find()) {            String num = matcher.group(0);            String number=num.substring(num.lastIndexOf('_')+1, num.length()-1);            htmlStr = htmlStr.replace(num, "<img src='/face/arclist/"+number+".gif' border='0' />");        }    }    return htmlStr;}    public static void main(String[] args) {        String html = "<script>alert('test');</script><img src='/face/arclist/5.gif' border='0' /><div style='position:fixs;s'></div><style>body{color:#fff;}</style><Style>body{color:#fff;}</Style><STYLE>body{color:#fff;}</STYLE>";        System.out.println("html="+html);        html = HTMLUtils.filterTagByName(html, "style");        System.out.println("html="+html);        html = HTMLUtils.filterTagByName(html, "script");        System.out.println("html="+html);        html = HTMLUtils.filterHTMLTagInStyle(html);        System.out.println("html="+html);    }}

java 过滤特殊字符串升级版

ASCII码中除了32之外还有160这个特殊的空格 db中的空格 不间断空格->页面上的&nbsp所产生的空格;

     public static String stringFilter (String str){        String regEx="[\\u00A0\\s\"`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“'。,、?]";        Pattern p = Pattern.compile(regEx);        Matcher m = p.matcher(str);        return m.replaceAll("").trim();    }

“java过滤特殊字符的操作方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: java过滤特殊字符的操作方法

本文链接: https://lsjlt.com/news/296496.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java过滤特殊字符的操作方法
    本篇内容介绍了“java过滤特殊字符的操作方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!XSS ,全名:cross-site scrip...
    99+
    2023-06-20
  • java过滤特殊字符操作(xss攻击解决方案)
    XSS ,全名:cross-site scripting(跨站点脚本),是当前 web 应用中最危险和最普遍的漏洞之一。攻击者尝试注入恶意脚本代码(常js脚本)到受信任的网站上执行恶...
    99+
    2024-04-02
  • C#过滤sql特殊字符串的方法
    1.过滤不安全的字符串 /// <summary> /// 过滤不安全的字符串 /// </summary> /// <...
    99+
    2024-04-02
  • python:过滤字符串中的字母数字特殊
    今天遇到的字符串处理的问题,记录一下方便使用   1 str1 = input('请输入一个字符:') 2 #初始化字符、数字、空格、特殊字符的计数 3 lowercase = 0 4 uppercase = 0 5 nu...
    99+
    2023-01-30
    字符串 字母 数字
  • C#如何过滤sql特殊字符串
    本文小编为大家详细介绍“C#如何过滤sql特殊字符串”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#如何过滤sql特殊字符串”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。过滤不安全的字符串 &nbs...
    99+
    2023-07-02
  • Python连接MySQL并使用fetchall()方法过滤特殊字符
    来一个简单的例子,看Python如何操作数据库,相比Java的JDBC来说,确实非常简单,省去了很多复杂的重复工作,只关心数据的获取与操作。 准备工作 需要有相应的环境和模块: Ubuntu 14.0...
    99+
    2022-06-04
    特殊字符 方法 Python
  • java中如何使用正则表达式过滤特殊字符
    实例代码如下:推荐java视频教程:java学习视频public class FilterSpecialStr { public static void main(String[] args) { String regE...
    99+
    2021-04-20
    java 正则表达式 过滤 特殊字符
  • PHP对表单提交特殊字符的过滤和处理
    函数名 释义 介绍htmlspecialchars将与、单双引号、大于和小于号化成HTML格式&转成&amp; "转成&quot;' 转成&#0...
    99+
    2024-04-02
  • php特殊字符的转换方法
    这篇文章给大家分享的是有关php特殊字符的转换方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php转换特殊字符的方法:1、通过htmlspecialchars函数进行转换;2、通过“htmlspecialch...
    99+
    2023-06-14
  • Spring Boot 实现敏感词及特殊字符过滤处理
    背景: 技术采用的是 Spring Boot ,请求方法主要为 POST, 请求使用较多的注解为 @RequestBody 交付测试人员进行测试,测试人员在对模糊搜索模块进行了各种特...
    99+
    2024-04-02
  • Java split()方法中的特殊符号
    一、split是什么? 在Java中,split()方法用于分隔字符串,可以根据匹配给定的正则表达式来拆分字符串。split()方法可以将一个字符串分割为子字符串,然后将结果作为字符串数组返回;语法如下,其中参数regex指定正则表达式分隔...
    99+
    2023-09-17
    java
  • Java利用StringBuffer替换特殊字符的方法实现
    在本实例中为保证学生输入的 Java 文件名合格,将利用 StringBuffer 类实现对 Java 文件名中的特殊符号进行替换,包括将中文状态下的“。”和全角状态下的“.”替换为...
    99+
    2024-04-02
  • java特殊字符转义处理的方法是什么
    在Java中,可以使用反斜杠(\)来转义特殊字符。以下是一些常见的特殊字符转义序列:- \n:换行- \t:制表符- \r:回车- ...
    99+
    2023-08-11
    java
  • java特殊字符转义处理的方法有哪些
    使用双反斜杠"\“: 在特殊字符前添加一个反斜杠来转义。例如,要表示一个双引号字符”,可以写成"。 使用...
    99+
    2024-03-01
    java
  • discuz3.4特殊字符乱码的解决方法
    这篇文章将为大家详细讲解有关discuz3.4特殊字符乱码的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Discuz!3.4升级后,贴子内容使用Unicode编码会出现直接显示源码问题打开:so...
    99+
    2023-06-14
  • Spring Boot如何实现敏感词及特殊字符过滤处理
    这篇文章主要介绍“Spring Boot如何实现敏感词及特殊字符过滤处理”,在日常操作中,相信很多人在Spring Boot如何实现敏感词及特殊字符过滤处理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spr...
    99+
    2023-06-20
  • java怎么替换带特殊字符的字符串
    在Java中,可以使用字符串的`replace()`方法来替换带特殊字符的字符串。`replace()`方法接受两个参数,第一个参数...
    99+
    2023-08-16
    java
  • Node.js Mongodb 密码特殊字符 @的解决方法
    在去年的 DB 勒索事件之后, 不少的同学开始加强 Mongodb 的安全性, 其中一种办法就是设置复杂的密码. 那么问题来了, 如果设置的密码里包含一些如 “@”, “:” 一样的特殊字符怎么办?...
    99+
    2022-06-04
    解决方法 特殊字符 密码
  • linux特殊字符转义的方法是什么
    在Linux中,特殊字符可以通过反斜杠(\)进行转义,以使其作为普通字符处理。例如,如果想要在一个字符串中包含一个双引号字符,可以使...
    99+
    2024-04-02
  • mysql保存微信昵称特殊字符的方法
    我在用mysql 保存微信昵称,当插入昵称数据的时候,报错。于是做了如下工作:     一、简介    MySQL在5.5.3之后增加了这个utf8mb4的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作