Tomcat部署程序避免jsp木马攻击

JSP的本质是servlet,当外面攻击者将jsp文件上传到程序目录下,就能通过访问jsp文件进行服务攻击,可以通过程序避免jsp文件上传。

如果jsp文件已经上传上去,可以避免jsp文件被直接访问,思路是通过servlet对*.jsp、*.jspx文件进行过滤,核心代码如下:

Servlet文件:

Object flag = request.getAttribute("org.apache.catalina.core.DISPATCHER_TYPE");
        if (flag != null)
        {
            if ((("javax.servlet.DispatcherType".equals(flag.getClass().getName())) &&
                    ("REQUEST".equals(flag.toString()))) || (
                    ((flag instanceof Integer)) && (((Integer)flag).intValue() == 8))) {
                response.setContentType("text/html;charset=UTF-8");
                Writer writer = response.getWriter();
                boolean isJspExist = new File(request.getServletContext().getRealPath(request.getServletPath())).exists();
                String htmlOutput = isJspExist ? "\r\n\r\n\r\n由于安全原因JSP功能默认关闭\r\n由于安全原因,JSP功能默认被禁止\r\n";
                if (this.springBoot)
                    writer.write(htmlOutput.replace("##WARNINFO##", "如需开启请在SpringBoot启动程序中修改相关配置"));
                else {
                    writer.write(htmlOutput.replace("##WARNINFO##", "如需开启请编辑WEB应用的web.xml文件"));
                }
                writer.flush();
                writer.close();
                return;
            }
        }

web.xml中的配置:


    jsp
    tomcat.SecurityJspServlet
  


  
    jsp
    *.jsp
  

  
    jsp
    *.jspx
  

 

你可能感兴趣的:(Java基础,网络应用,安全)