servlet获取jsp页面的值为null_Jsp挖掘(4)-打造自己的jsp防御代码
打造自己的jsp防御代碼
一、需要準(zhǔn)備JDK環(huán)境
編譯.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
二、實(shí)際設(shè)置
設(shè)置一個(gè)全局的過(guò)濾器,通過(guò)web.xml添加filter過(guò)濾器
名稱(chēng):Url中注入過(guò)濾器
功能:可以過(guò)濾,導(dǎo)向到錯(cuò)誤頁(yè),防止代碼泄漏
需要的設(shè)置:Web.Xml文件中需要進(jìn)行如下設(shè)置
* <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服務(wù)器
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提交過(guò)濾(注:可自行添加POST和Cookie過(guò)濾) if(url1==null||!sql_inj(url1)) { chain.doFilter(request,response); } else{ res.sendRedirect(req.getContextPath()+"/err.jsp"); //設(shè)置轉(zhuǎn)向的錯(cuò)誤頁(yè)面 } } //過(guò)濾函數(shù) 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; } //過(guò)濾結(jié)束 public void init(FilterConfig config) throws ServletException {} public void destroy() {} }
編譯:javac urlfilter.java 出現(xiàn)錯(cuò)誤
主要是缺少:servlet-api.jar
成功編譯:
javac -target 1.4 -source 1.4 -classpath servlet-api.jar urlfilter.java
還需要一個(gè)web.xm文件(一般web頁(yè)面會(huì)有這個(gè),只需要添加filter對(duì)應(yīng)的地方)
<?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的相關(guān)的關(guān)聯(lián)urlfilter的這個(gè)類(lèi)
重新啟動(dòng)
主要是過(guò)濾這些字段:
String inj_str ="' and exec insert select delete update count * % chr mid master truncate char declare ; or - + ,";
提交有含有上面過(guò)濾的參數(shù)就跳轉(zhuǎn)err.jsp
這個(gè)是sql的防御,XSS的防御相似。
三、總結(jié)
主要是java的編譯,還有fileter的web.xml的添加。
過(guò)濾全局的函數(shù)編寫(xiě),
?公眾號(hào):
thelostworld:
個(gè)人知乎?:https://www.zhihu.com/people/fu-wei-43-69/columns
?個(gè)人簡(jiǎn)書(shū):https://www.jianshu.com/u/bf0e38a8d400
總結(jié)
以上是生活随笔為你收集整理的servlet获取jsp页面的值为null_Jsp挖掘(4)-打造自己的jsp防御代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 游戏开发需要具备哪些技术_生鲜小程序需要
- 下一篇: simpledateformat 毫秒_