當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring Security Web : FirewalledResponse 经过防火墙加强安全的响应
生活随笔
收集整理的這篇文章主要介紹了
Spring Security Web : FirewalledResponse 经过防火墙加强安全的响应
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
概述
功能介紹
FirewalledResponse是Spring Security Web提供的一個HttpServletResponse實現,是一個帶有防火墻增強安全能力的HttpServletResponse實現,被HttpFirewall對象用于對一個HttpServletResponse進行安全增強的包裝器。
通過FirewalledResponse的包裝,它對HttpServletResponse做了如下安全增強:
有關方法 : #setHeader,#addHeader
有關方法 : #addCookie
有關方法 : #sendRedirect
FirewalledResponse對寫入響應的值所做的增強邏輯中,如果所寫入的值違反了規則,則會拋出異常IllegalArgumentException。
繼承關系
使用介紹
HttpFirewall的兩個實現類StrictHttpFirewall,DefaultHttpFirewall都用到了FirewalledResponse,具體用法如下 :
@Overridepublic HttpServletResponse getFirewalledResponse(HttpServletResponse response) {return new FirewalledResponse(response);}源代碼
源代碼版本 : Spring Security Web 5.1.4.RELEASE
package org.springframework.security.web.firewall;import java.io.IOException; import java.util.regex.Pattern;import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper;class FirewalledResponse extends HttpServletResponseWrapper {private static final Pattern CR_OR_LF = Pattern.compile("\\r|\\n");private static final String LOCATION_HEADER = "Location";private static final String SET_COOKIE_HEADER = "Set-Cookie";public FirewalledResponse(HttpServletResponse response) {super(response);}@Overridepublic void sendRedirect(String location) throws IOException {// TODO: implement pluggable validation, instead of simple blacklisting.// SEC-1790. Prevent redirects containing CRLFvalidateCrlf(LOCATION_HEADER, location);super.sendRedirect(location);}@Overridepublic void setHeader(String name, String value) {validateCrlf(name, value);super.setHeader(name, value);}@Overridepublic void addHeader(String name, String value) {validateCrlf(name, value);super.addHeader(name, value);}@Overridepublic void addCookie(Cookie cookie) {if (cookie != null) {validateCrlf(SET_COOKIE_HEADER, cookie.getName());validateCrlf(SET_COOKIE_HEADER, cookie.getValue());validateCrlf(SET_COOKIE_HEADER, cookie.getPath());validateCrlf(SET_COOKIE_HEADER, cookie.getDomain());validateCrlf(SET_COOKIE_HEADER, cookie.getComment());}super.addCookie(cookie);}void validateCrlf(String name, String value) {if (hasCrlf(name) || hasCrlf(value)) {throw new IllegalArgumentException("Invalid characters (CR/LF) in header " + name);}}private boolean hasCrlf(String value) {return value != null && CR_OR_LF.matcher(value).find();} }參考文章
- Spring Security Web : Web安全過濾器鏈代理對象 FilterChainProxy
- Spring Security Web : StrictHttpFirewall HTTP防火墻(嚴格模式)
- Spring Security Web : DefaultHttpFirewall HTTP防火墻(缺省模式)
- Spring Security Web : 概念模型接口 HttpFirewall
總結
以上是生活随笔為你收集整理的Spring Security Web : FirewalledResponse 经过防火墙加强安全的响应的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机图形学 Unity ShaderL
- 下一篇: 基于深度学习的图像语义分析及其应用