Spring Security Web : 概念模型接口 HttpFirewall

概述

功能介绍

HttpFirewallSpring Web提供的一个接口,抽象建模HTTP防火墙这一概念。相应对象用于拒绝存在潜在风险的请求或者包装它们以控制它们的行为。该接口的实现类对象会被注入到FilterChainProxy,在安全过滤器链被调用之前该防火墙逻辑会被调用。如果响应对象的行为需要被限制,该防火墙也可以对响应进行包装再返回给请求方。

HttpFirewall只定义了两个接口方法,分别对请求/响应对象进行包装。这两个方法都在FilterChainProxy对请求调用过滤器链之前被调用。如果HttpFirewall认为请求有风险,会抛出异常RequestRejectedException从而拒绝该请求。而HttpFirewall封装后的响应对象对设置响应头部方法,cookie设置方法(对应头部Set-Cookie),重定向方法(对应头部Location设置)做了安全加强,确保相应值中不包含\r或者\n

HttpFirewall包装后的请求/相应对象分别是:FirewalledRequestFirewalledResponse

继承关系

HttpFirewall

使用介绍

Spring Web框架自身对HttpFirewall提供了两个实现类:DefaultHttpFirewallStrictHttpFirewallFilterChainProxy缺省使用的是StrictHttpFirewallDefaultHttpFirewall是个缺省实现,建议使用StrictHttpFirewall而不是DefaultHttpFirewall

源代码

package org.springframework.security.web.firewall;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public interface HttpFirewall {
     

	/**
	 * Provides the request object which will be passed through the filter chain.
	 *
	 * @throws RequestRejectedException if the request should be rejected immediately
	 */
	FirewalledRequest getFirewalledRequest(HttpServletRequest request)
			throws RequestRejectedException;

	/**
	 * Provides the response which will be passed through the filter chain.
	 *
	 * @param response the original response
	 * @return either the original response or a replacement/wrapper.
	 */
	HttpServletResponse getFirewalledResponse(HttpServletResponse response);
}

参考文章

Spring Security Web : Web安全过滤器链代理对象 FilterChainProxy
Spring Security Web : StrictHttpFirewall HTTP防火墙(严格模式)
Spring Security Web : DefaultHttpFirewall HTTP防火墙(缺省模式)

你可能感兴趣的:(Spring,Web,Spring,Security,分析)