jfinal 检测到目标URL存在http host头攻击漏洞的解决方法

记录

      • 编写handler 来对此漏洞进行修复

编写handler 来对此漏洞进行修复

注:JFinal的 Handler是 AOP + 责任链 模式的一个变种,JFinal对action及interceptor处理自身也是一个Handler名叫ActionHandler,可见其功能之强大。平时开发的时候一般不需要使用,当Action与Interceptor还不够用的时候可以考虑Handler上场。另外Handler可以替代Filter,你无需在web.xml 中再声明Filter了。举几个应用的例子吧:1:网站改版,需要在新网站上兼容老网站上的url时能用到,只需要在Handler中将老网站url转换成新的就可以了。2:防恶意抓取可以使用Handler分析请求规律并封锁ip地址。3:如果你想自创一套路由规则可以用Handler。 如果你要做网站访问日志也可以使用Handler。Handler 可以接管所有请求,所以是无所不能的,你甚至可以基于 Handler 再扩展出一套自己的web 框架
直接上代码(hanlder 内容):



package com.gdszgl.common.handler;

import com.jfinal.handler.Handler;
import com.jfinal.kit.HandlerKit;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**ren
 */
public class HttpHostHandler  extends Handler {


	public HttpHostHandler() {
		System.out.println("头部host过滤已启动--------------------------");
	}

	public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
	    //检测到会话cookie中缺少HttpOnly属性的问题解决
		response.setHeader( "Set-Cookie", "name=value; HttpOnly");

		//点击劫持:X-Frame-Options 配置
		response.addHeader("x-frame-options","SAMEORIGIN");
		
		System.out.println("头部host 过滤开始--------------------------");
		String host=request.getHeader("host");
		if(host!=null&&checkHost(host)==true){
			System.out.println("头部host 过滤结束--------------------------");
			next.handle(target, request, response, isHandled);
		}else{
			HandlerKit.renderError404(request, response, isHandled);
			System.out.println("头部host 过滤结束--------------------------");
			return;
		}
	}

	private boolean checkHost(String host){
		if(host.contains("xx.xx.xx.xx")){//此处为自己网站的主机地址
			return true;
		}
		return true;
	}
}

MainConfig 启动类的内容。

 //处理头部host 的问题
    me.add(new HttpHostHandler());

博客参考
检测到目标URL存在http host头攻击漏洞(中风险) 文章

记录到这里,欧克!

你可能感兴趣的:(java)