servlet获取jsp页面的值为null_Jsp挖掘(4)-打造自己的jsp防御代码

1a0aedca08a46a155b50d808915887da.png

打造自己的jsp防御代码

一、需要准备JDK环境

编译.java文件成.class文件

https://www.oracle.com/technetwork/java/javase/downloads/index.html

5e0887fce5fac90c5d211b053a11c9ea.png

需要javac编译

0da91a95f376a7e6e009de6d1bc3c13b.png

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

主要是缺少:servlet-api.jar

4d50d02f8809f4b933b36889d811afcd.png

成功编译:

javac -target 1.4 -source 1.4 -classpath servlet-api.jar urlfilter.java

2bea10b6a1922714e5bc2e870489ef60.png

还需要一个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

就是在class的添加Safe3conn/urlfilter.class

126b7fd0178386141d339d1c85a11995.png

web.xml的相关的关联urlfilter的这个类

492390291c9420fd4b0872fa59c6f822.png

重新启动

2888fe967bdb3554724f9ed7b16b7764.png

主要是过滤这些字段:

String inj_str ="' and exec insert select delete update count * % chr mid master truncate char declare ; or - + ,";

057eaae007db76dad19bb3e4b8a50c9f.png

提交有含有上面过滤的参数就跳转err.jsp

8f4a062fd11df1176c06fc27fcf6acd0.png

这个是sql的防御,XSS的防御相似。

三、总结

主要是java的编译,还有fileter的web.xml的添加。

过滤全局的函数编写,

​公众号:

0626d1ffc296ca338a8e22f6cb0d72cc.png

thelostworld:

630711147c97746a7ae009b89e1da3b8.png

个人知乎​:https://www.zhihu.com/people/fu-wei-43-69/columns

​个人简书:https://www.jianshu.com/u/bf0e38a8d400

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值