2012victory 2015-04-14 07:37 采纳率: 0%
浏览 851

Struts2用拦截器过滤脏字

实现用interceptor从前台的中取出内容,然后检查是否有敏感字

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-03 16:37
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Struts 2中,你可以使用Interceptor来拦截请求并执行特定的操作。例如,你可以创建一个拦截器来检查请求中的参数是否包含敏感字。

    以下是一个简单的示例:

    import org.apache.struts2.dispatcher.interceptor.SessionAwareInterceptor;
    import org.apache.struts2.dispatcher.ng.filter.RequestParameterAwareFilter;
    
    public class MySessionAwareInterceptor extends SessionAwareInterceptor implements RequestParameterAwareFilter {
    
        private String[] sensitiveWords = {"badword1", "badword2"};
    
        @Override
        public void setRequestParameter(String name, Object value) {
            // 这里可以添加额外的参数处理逻辑
        }
    
        @Override
        public boolean hasSensitiveWord(String word) {
            for (String sensitiveWord : this.sensitiveWords) {
                if (sensitiveWord.equals(word)) {
                    return true;
                }
            }
            return false;
        }
    
        @Override
        public void afterProcessing(Object obj, String actionName, HttpServletRequest request, HttpServletResponse response)
                throws Exception {
            super.afterProcessing(obj, actionName, request, response);
            // 检查请求中的参数是否包含敏感字
            String paramValue = (String) request.getParameter("param");
            if (!this.hasSensitiveWord(paramValue)) {
                // 如果没有发现敏感字,则继续处理请求
                // ...
            } else {
                // 发现敏感字,则处理异常或跳转到错误页面
                // ...
            }
        }
    }
    

    在这个例子中,我们首先定义了一个sensitiveWords数组,其中包含了我们需要检测的敏感字。然后,在afterProcessing方法中,我们通过调用hasSensitiveWord方法来检查请求中的参数是否包含敏感字。如果发现有敏感字,我们就处理异常或者跳转到错误页面。

    注意:这只是一个基本的例子,实际的应用可能需要更复杂的处理逻辑和错误处理机制。

    评论

报告相同问题?