1. 前提是你的Java Web系统不使用 jsp 作为视图层,否则会对自身产生影响;
2. 在 web.xml 中配置禁止 jsp 脚本功能:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jspx</url-pattern>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
</jsp-config>
配置生效后,将不允许 jsp/jspx 文件中包含任何 scripting,包括:
<% %> 与 <jsp:scriptlet></jsp:scriptlet>
<%! %> 与 <jsp:declaration></jsp:declaration>
<%= %> 与 <jsp:expression></jsp:expression>
包含上述脚本的 jsp / jspx 文件在编译的时候将产生编译错误。目前能看见的 Java 的 webshell 全都离不开这几种语法,所以应该可以说是能够禁止所有目前已知的 Java WebShell。