过滤器实现统一编码以及过滤非法文字

一、新建过滤器

首先要新建一个过滤器,通过注解完成Filter配置

// 通过注解完成Filter配置,/*表示过滤所有请求@WebFilter("/*")

现在所有的页面都被过滤掉了,全部不能进行正常的请求,我们只需在doFilter()方法中写上

@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)  throws IOException, ServletException{

​		chain.doFilter(request, response);//继续执行,表示请求继续执行}
二、进行操作

接下来我们就可以在doFilter()方法里面进行统一编码和过滤非法文字(注意:这里的非法文字指的是参数中的非法文字)

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)  throws IOException, ServletException{

​		System.out.println("过滤");

​		request.setCharacterEncoding("utf-8");//设置统一编码//对所有的参数进行非法文字的过滤

​		Enumeration<String> en = request.getParameterNames();while(en.hasMoreElements()) {

​			String paramName = en.nextElement();

​			String paramValue = request.getParameter(paramName).toString();if(paramValue.indexOf("去你丫的")!= -1) {

​				System.out.println("不能传递脏话");return;}}

​		chain.doFilter(request, response);//继续执行,表示请求继续执行}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,Spring Boot可以使用过滤器(Filter)来过滤非法字符。可以在过滤器中对请求进行预处理和后处理,比如字符编码转换、参数校验、安全控制等。以下是一个示例过滤器,它可以过滤掉请求中的非法字符: ```java @Component public class IllegalCharacterFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { // 初始化过滤器 } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; // 进行字符编码转换 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); // 获取请求参数 Map<String, String[]> parameterMap = request.getParameterMap(); for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) { String name = entry.getKey(); String[] values = entry.getValue(); for (int i = 0; i < values.length; i++) { String value = values[i]; // 过滤非法字符 if (containsIllegalCharacter(value)) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, "包含非法字符"); return; } } } // 执行下一个过滤器或目标资源 filterChain.doFilter(request, response); } @Override public void destroy() { // 销毁过滤器 } private boolean containsIllegalCharacter(String value) { // 判断是否包含非法字符,例如 <script>、alert() 等 return value.contains("<script>") || value.contains("alert("); } } ``` 在上述示例中,IllegalCharacterFilter 实现了 Filter 接口,并通过 @Component 注解将其注册为 Spring Bean。在 doFilter 方法中,通过 request.setCharacterEncoding 和 response.setCharacterEncoding 进行字符编码转换,然后获取请求参数并遍历每个参数值,判断是否包含非法字符。如果包含非法字符,则直接返回错误响应,否则执行下一个过滤器或目标资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值