servlet获取jsp页面的值为null_Jsp挖掘(4)-打造自己的jsp防御代码
打造自己的jsp防御代碼
一、需要準備JDK環境
編譯.java文件成.class文件
https://www.oracle.com/technetwork/java/javase/downloads/index.html
需要javac編譯
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 出現錯誤
主要是缺少:servlet-api.jar
成功編譯:
javac -target 1.4 -source 1.4 -classpath servlet-api.jar urlfilter.java
還需要一個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
就是在class的添加Safe3conn/urlfilter.class
web.xml的相關的關聯urlfilter的這個類
重新啟動
主要是過濾這些字段:
String inj_str ="' and exec insert select delete update count * % chr mid master truncate char declare ; or - + ,";
提交有含有上面過濾的參數就跳轉err.jsp
這個是sql的防御,XSS的防御相似。
三、總結
主要是java的編譯,還有fileter的web.xml的添加。
過濾全局的函數編寫,
?公眾號:
thelostworld:
個人知乎?:https://www.zhihu.com/people/fu-wei-43-69/columns
?個人簡書:https://www.jianshu.com/u/bf0e38a8d400
總結
以上是生活随笔為你收集整理的servlet获取jsp页面的值为null_Jsp挖掘(4)-打造自己的jsp防御代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏开发需要具备哪些技术_生鲜小程序需要
- 下一篇: simpledateformat 毫秒_