![1a0aedca08a46a155b50d808915887da.png](https://i-blog.csdnimg.cn/blog_migrate/d8c1f02c99d1137b93aaa1b09340a98c.png)
打造自己的jsp防御代码
一、需要准备JDK环境
编译.java文件成.class文件
https://www.oracle.com/technetwork/java/javase/downloads/index.html
![5e0887fce5fac90c5d211b053a11c9ea.png](https://i-blog.csdnimg.cn/blog_migrate/dda33ebb9b448e96bc27445dfe74e58e.jpeg)
需要javac编译
![0da91a95f376a7e6e009de6d1bc3c13b.png](https://i-blog.csdnimg.cn/blog_migrate/6eeab23d20a795244feb760be77efe6d.jpeg)
javac -target 1.4 -source 1.4 -classpath servlet-api.jar urlfilter.java
二、实际设置
设置一个全局的过滤器,通过web.xml添加filter过滤器
名称:Url中注入过滤器
功能:可以过滤,导向到错误页,防止代码泄漏
需要的设置:Web.Xml文件中需要进行如下设置
* <filter> * <filter-name>urlfilter</filter-name> * <filter-class>Safe3conn.urlfilter</filter-class> * </filter> * * <filter-mapping> * <filter-name>urlfilter</filter-name> * <url-pattern>/*</url-pattern> * </filter-mapping>
编译后的class文件要放在WEB-INFclassesSafe3conn文件夹下,改变Web.xml文件后需要重启Tomcat服务器
package Safe3conn; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import java.lang.String.*; import java.lang.*; public class urlfilter extends HttpServlet implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { HttpServletRequest req = (HttpServletRequest)request; HttpServletResponse res = (HttpServletResponse)response; String url1=(String)((HttpServletRequest)request).getQueryString(); //GET提交过滤(注:可自行添加POST和Cookie过滤) if(url1==null||!sql_inj(url1)) { chain.doFilter(request,response); } else{ res.sendRedirect(req.getContextPath()+"/err.jsp"); //设置转向的错误页面 } } //过滤函数 public static boolean sql_inj(String str) { String inj_str ="' and exec insert select delete update count * % chr mid master truncate char declare ; or - + ,"; String inj_stra[] = inj_str.split(" "); for (int i=0 ; i < inj_stra.length ; i++ ) { if (str.indexOf(inj_stra[i])>=0) { return true; } } return false; } //过滤结束 public void init(FilterConfig config) throws ServletException {} public void destroy() {} }
编译:javac urlfilter.java 出现错误
![7d79d880071f464610ac5a3eee0ba8d9.png](https://i-blog.csdnimg.cn/blog_migrate/7451e6484fd0bf339ac07efe12e463b3.jpeg)
主要是缺少:servlet-api.jar
![4d50d02f8809f4b933b36889d811afcd.png](https://i-blog.csdnimg.cn/blog_migrate/5f0da321b3ea099a6107115941bfae0b.jpeg)
成功编译:
javac -target 1.4 -source 1.4 -classpath servlet-api.jar urlfilter.java
![2bea10b6a1922714e5bc2e870489ef60.png](https://i-blog.csdnimg.cn/blog_migrate/c82eeaa6940c4714b71e9dbfab0157cb.jpeg)
还需要一个web.xm文件(一般web页面会有这个,只需要添加filter对应的地方)
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app> <filter> <filter-name>sqlfilter</filter-name> <filter-class>Safe3conn.urlfilter</filter-class> </filter> <filter-mapping> <filter-name>sqlfilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
最后需要把class文件放到WEB-INFO
![7363425212291b21059abd5343a38a17.png](https://i-blog.csdnimg.cn/blog_migrate/9fb76081ff0a018057a8ae9bda543bc3.png)
就是在class的添加Safe3conn/urlfilter.class
![126b7fd0178386141d339d1c85a11995.png](https://i-blog.csdnimg.cn/blog_migrate/bceb58090e90e6c57939fbf6666207de.png)
web.xml的相关的关联urlfilter的这个类
![492390291c9420fd4b0872fa59c6f822.png](https://i-blog.csdnimg.cn/blog_migrate/c35797e665e5e29b445a76e21dbfabb1.jpeg)
重新启动
![2888fe967bdb3554724f9ed7b16b7764.png](https://i-blog.csdnimg.cn/blog_migrate/10412a413baa2a8f642ccbed6ec31595.png)
主要是过滤这些字段:
String inj_str ="' and exec insert select delete update count * % chr mid master truncate char declare ; or - + ,";
![057eaae007db76dad19bb3e4b8a50c9f.png](https://i-blog.csdnimg.cn/blog_migrate/33b20e30692f9bd1e8e1ccdd2cf6ee62.png)
提交有含有上面过滤的参数就跳转err.jsp
![8f4a062fd11df1176c06fc27fcf6acd0.png](https://i-blog.csdnimg.cn/blog_migrate/553b506ff9a5b2b8cdf87b2f83a0e0e6.jpeg)
这个是sql的防御,XSS的防御相似。
三、总结
主要是java的编译,还有fileter的web.xml的添加。
过滤全局的函数编写,
公众号:
![0626d1ffc296ca338a8e22f6cb0d72cc.png](https://i-blog.csdnimg.cn/blog_migrate/0d4c80e87ed1ab74d0c80d06fc35c62c.jpeg)
thelostworld:
![630711147c97746a7ae009b89e1da3b8.png](https://i-blog.csdnimg.cn/blog_migrate/8d6b3839c3eea8ef3b74bbdd95c78865.png)
个人知乎:https://www.zhihu.com/people/fu-wei-43-69/columns
个人简书:https://www.jianshu.com/u/bf0e38a8d400