打造自己的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防御代码相关推荐

  1. jquery 获取父页面Id 值

    jquery 获取父页面Id 值 $('#id', parent.document).val();

  2. Java中文jsp页面_java中文乱码解决之道(七)—–JSP页面编码过程

    我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. 在上面代码中有两个地方存在编码:pageEncodi ...

  3. js取得当前url,javascript获取当前页面url值,js获取域名

    如果获取"当前"域名 host = window.location.host; url=document.domain; url = window.location.href; 取 ...

  4. html当前域名,js取得当前url,javascript获取当前页面url值,js获取域名

    运行如下: thisDLoc = document.location; thisURL = document.URL; thisHREF = document.location.href; thisS ...

  5. jsp与jsp页面间的值传递与接收

    1.使用<a>标签 传递值 <a href="index.jsp?name=增加数据">增加数据</a> ///目标页面/值/// 接收值 &l ...

  6. Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结

    Java Web学习,掌握JSP.Servlet.Cookie.Session等内容,使用JSTL进行数据展示完成实际应用. 2.3.1 XML基础 XML的用途.语法规则.语义约束.如何解析XML, ...

  7. servlet和jsp页面过滤器Filter的作用及配置

    刚刚有个朋友问我,Servlet的过滤器有什么作用? 现在发个帖子说明一下,            过滤器是一个对象,可以传输请求或修改响应.它可以在请求到达Servlet/JSP之前对其进行预处理, ...

  8. JSP页面最终是编译为Servlet执行的

    JSP页面最终是编译为Servlet执行的,你可以在Tomcat的%CATALINA_HOME%/work/Catalina/localhost中找到一个文件夹,该文件夹跟你的web-project的 ...

  9. struts2:JSON在struts中的应用(JSP页面中将对象转换为JSON字符串提交、JSP页面中获取后台Response返回的JSON对象)...

    JSON主要创建如下两种数据对象: 由JSON格式字符串创建,转换成JavaScript的Object对象: 由JSON格式字符串创建,转换成JavaScript的List或数组链表对象. 更多关于J ...

最新文章

  1. RAP Mock.js语法规范
  2. 实验四 数据库SQL语言基础编程
  3. Android 系统启动(一)---fork机制
  4. android edittext不可复制_Android EditText禁止复制粘贴
  5. 基于python opencv实现广角相机标定和图像畸变矫正
  6. Hadoop安装记录
  7. SpringBoot_数据访问-整合MyBatis(二)-注解版MyBatis
  8. LiveVideoStackCon讲师热身分享 ( 九 ) —— 51Talk音视频技术思考及非典型挑战
  9. rk3399性能_AIIA AI公布首轮评估结果:瑞芯微RK3399数据抢眼
  10. cf1206解题报告
  11. 鸿蒙os硬件要求,华为公布鸿蒙OS 2.0硬件安装要求:只要128K内存就能跑
  12. MyEclipse设置代码自动补全,及取消空格和‘=’补全
  13. 实践2.2 内核模块编译
  14. 7.25 8figting!
  15. 《Cisco安全防火墙服务模块(FWSM)解决方案》——2.6 硬件架构
  16. Power Query M语言全部list函数,快速分类掌握
  17. 关于JS跨域访问简述
  18. 【机器学习】回归误差:MSE、RMSE、MAE、R2、Adjusted R2 +方差、协方差、标准差(标准偏差/均方差)、均方误差、均方根误差(标准误差)、均方根解释
  19. (一)OSPF协议 及ospf与RIP的比较
  20. 百度上线惊雷算法3.0严打SEO快排作弊问题

热门文章

  1. 离散化+unique()+二分查找
  2. 操作系统之CPU调度
  3. 文档协同编辑帮助企业迎接大数据时代
  4. vs--bookmark用法
  5. MongoDB 树形模型
  6. 玩转html5画图 - TimeLangoliers - 博客园
  7. HDU 2546 饭卡(贪心+DP)
  8. dhl: js判断网页对象是否存在
  9. UA MATH524 复变函数9 柯西公式与幂级数展开
  10. UA MATH563 概率论的数学基础 中心极限定理5 Renyi定理