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防御代码相关推荐
- jquery 获取父页面Id 值
jquery 获取父页面Id 值 $('#id', parent.document).val();
- Java中文jsp页面_java中文乱码解决之道(七)—–JSP页面编码过程
我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. 在上面代码中有两个地方存在编码:pageEncodi ...
- js取得当前url,javascript获取当前页面url值,js获取域名
如果获取"当前"域名 host = window.location.host; url=document.domain; url = window.location.href; 取 ...
- html当前域名,js取得当前url,javascript获取当前页面url值,js获取域名
运行如下: thisDLoc = document.location; thisURL = document.URL; thisHREF = document.location.href; thisS ...
- jsp与jsp页面间的值传递与接收
1.使用<a>标签 传递值 <a href="index.jsp?name=增加数据">增加数据</a> ///目标页面/值/// 接收值 &l ...
- Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结
Java Web学习,掌握JSP.Servlet.Cookie.Session等内容,使用JSTL进行数据展示完成实际应用. 2.3.1 XML基础 XML的用途.语法规则.语义约束.如何解析XML, ...
- servlet和jsp页面过滤器Filter的作用及配置
刚刚有个朋友问我,Servlet的过滤器有什么作用? 现在发个帖子说明一下, 过滤器是一个对象,可以传输请求或修改响应.它可以在请求到达Servlet/JSP之前对其进行预处理, ...
- JSP页面最终是编译为Servlet执行的
JSP页面最终是编译为Servlet执行的,你可以在Tomcat的%CATALINA_HOME%/work/Catalina/localhost中找到一个文件夹,该文件夹跟你的web-project的 ...
- struts2:JSON在struts中的应用(JSP页面中将对象转换为JSON字符串提交、JSP页面中获取后台Response返回的JSON对象)...
JSON主要创建如下两种数据对象: 由JSON格式字符串创建,转换成JavaScript的Object对象: 由JSON格式字符串创建,转换成JavaScript的List或数组链表对象. 更多关于J ...
最新文章
- RAP Mock.js语法规范
- 实验四 数据库SQL语言基础编程
- Android 系统启动(一)---fork机制
- android edittext不可复制_Android EditText禁止复制粘贴
- 基于python opencv实现广角相机标定和图像畸变矫正
- Hadoop安装记录
- SpringBoot_数据访问-整合MyBatis(二)-注解版MyBatis
- LiveVideoStackCon讲师热身分享 ( 九 ) —— 51Talk音视频技术思考及非典型挑战
- rk3399性能_AIIA AI公布首轮评估结果:瑞芯微RK3399数据抢眼
- cf1206解题报告
- 鸿蒙os硬件要求,华为公布鸿蒙OS 2.0硬件安装要求:只要128K内存就能跑
- MyEclipse设置代码自动补全,及取消空格和‘=’补全
- 实践2.2 内核模块编译
- 7.25 8figting!
- 《Cisco安全防火墙服务模块(FWSM)解决方案》——2.6 硬件架构
- Power Query M语言全部list函数,快速分类掌握
- 关于JS跨域访问简述
- 【机器学习】回归误差:MSE、RMSE、MAE、R2、Adjusted R2 +方差、协方差、标准差(标准偏差/均方差)、均方误差、均方根误差(标准误差)、均方根解释
- (一)OSPF协议 及ospf与RIP的比较
- 百度上线惊雷算法3.0严打SEO快排作弊问题