示例Servlet过滤器捕获并阻止请求可疑URL的IP

时间:2013-08-23 04:18:35

标签: java servlet-filters

避免重新开发车轮。是否有任何示例Java EE servlet过滤器负责一些基本的安全检查/即

  • 如果rootkit命中服务器,则阻止Web请求一段时间,即使用以.exe结尾或包含“../../.."
  • 的网址
  • 限制或阻止正在发出意外大量请求的IP。

我也想知道,对于那些特定类型的请求,servlet过滤器中等同于Thread.sleep(1000);的东西是不是一件坏事。

1 个答案:

答案 0 :(得分:4)

也许这会有所帮助。

public class SuspiciousURLFilter implements Filter {

        @Override
        public void destroy() {
        }

        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain filterChain) throws IOException, ServletException {

            HttpServletRequest httpRequest = (HttpServletRequest) request;
            String requestURI = httpRequest.getRequestURI();

            if (requestURI.endsWith(".exe")) {

                HttpServletResponse httpResponse = (HttpServletResponse) response;
                            //send error or maybe redirect to some error page
                            httpResponse.sendError(HttpServletResponse.SC_BAD_REQUEST);
            }

            filterChain.doFilter(request, response);
        }

        @Override
        public void init(FilterConfig config) throws ServletException {
        }
    }

在你的web.xml中:

    <filter>
        <filter-name>suspiciousURLFilter </filter-name>
        <filter-class>your.package.SuspiciousURLFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>SuspiciousURLFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>