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 = isJspExis