日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Security Web : FirewalledResponse 经过防火墙加强安全的响应

發布時間:2023/12/8 javascript 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Security Web : FirewalledResponse 经过防火墙加强安全的响应 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

功能介紹

FirewalledResponse是Spring Security Web提供的一個HttpServletResponse實現,是一個帶有防火墻增強安全能力的HttpServletResponse實現,被HttpFirewall對象用于對一個HttpServletResponse進行安全增強的包裝器。

通過FirewalledResponse的包裝,它對HttpServletResponse做了如下安全增強:

  • 設置或者添加響應頭部時,確保寫入的頭部值不包含\r或者\n;

    有關方法 : #setHeader,#addHeader

  • 添加cookie時,確保寫入的值不包含\r或者\n;

    有關方法 : #addCookie

  • 重定向時,確保重定向location中不包含\r或者\n;

    有關方法 : #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 经过防火墙加强安全的响应的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。