fbpx

Citrix ADC對 HTTP Cookie實施安全保護

HTTP Cookie已經成為網路應用的重要組成部分,但它們往往容易受到攻擊,如跨網站請求偽造和跨網站腳本,這可能導致敏感的使用者資料被盜。Cookie安全加固是讓線上活動更加安全的第一步,”SameSite”屬性可以説明您為您的Cookie實施安全加固。

在本文中,我們將探討如何在同網站和跨網站的情況下,將”SameSite”屬性放入由Citrix ADC前端的應用程式插入的cookie中。

保護Cookies免受CSRF漏洞的侵害

跨站請求偽造(CSRF)是一種HTTP漏洞,攻擊者可以利用它來劫持用戶帳戶並控制HTTP交互資訊。”SameSite”屬性通過限制Cookie在同網站上下文中的使用,有助於保護應用程式免受CSRF攻擊。

Web應用程式通常使用HTTP Cookie來驗證用戶身份和跟蹤用戶活動。如果您的基於HTTP的應用程式使用Cookie,並且從未在跨網站上下文中進行訪問,那麼保護Cookie免受跨網站濫用至關重要。如果Citrix ADC前端是您的應用程式,您不需要對後端進行更改。您可以直接使用Citrix Rewrite Policy功能將”SameSite=strict “屬性附加到後端cookie中。

add rewrite action append_samesite_cookie_action replace_all http.RES.full_Header “\”SameSite=strict; path=/\”” -search “regex(re!(?i)(path=\\/)!)”
add rewrite policy append_samesite_cookie “http.RES.HEADER(\”Set-Cookie\”).EXISTS” append_samesite_cookie_action
bind lb vserver <LB vserver name > -policyName append_samesite_cookie -priority 20 -gotoPriorityExpression next -type RESPONSE

為了保護後端應用程式不受跨站腳本(XSS)攻擊和在非安全的HTTP通信中使用Cookie,添加”secure”和”httponly”屬性來保護你的Cookie。你可以通過將下面的Citrix Rewrite Policy綁定到你的應用前端的負載均衡虛擬伺服器上,將”secure”和”httponly”屬性附加到後端伺服器返回的所有cookie中。

add rewrite action append_httponly_secure_action replace_all http.RES.full_Header “\”SameSite=strict; secure; httponly; path=/\”” -search “regex(re!(?i)(path=\\/)!)”
add rewrite policy append_httponly_secure_policy “http.RES.HEADER(\”Set-Cookie\”).EXISTS” append_httponly_secure_action
bind lb vserver <LB vserver name > -policyName append_httponly_secure_policy -priority 20 -gotoPriorityExpression next -type RESPONSE

如果由Citrix ADC前端的所有應用程式都有相同的要求來保護其Cookie,您可以將上述重寫Policy綁定到全域http回應覆蓋綁定點。這樣您就可以避免為每個特定應用的LB VServer進行上述更改。

bind rewrite global append_samesite_cookie 20 NEXT -type RES_OVERRIDE

安全地啟用跨網站存取

在Chrome 80更新後,沒有明確samesite屬性的Cookie將被視為”SameSite=Lax”。帶有”SameSite=None;secure”的Cookie僅適用於跨網站訪問。在本次更新之前,沒有明確的”SameSite”屬性的Cookie被處理為”SameSite=None”,默認啟用跨網站存取權限。因此,使用者需要對所有跨網站訪問的應用進行更改。

使用者如果要想在不做配置或代碼修改的情況下啟用應用的跨站訪問,可以使用下面的Citrix Rewrite Policy,將”SameSite=None”屬性附加到所有應用的Cookie中。

add rewrite action enable_cross_site_access replace_all http.RES.full_Header “\”SameSite=None; secure; path=/\”” -search “regex(re!(?i)(path=\\/)!)”
add rewrite policy append_samesite_cookie “http.RES.HEADER(\”Set-Cookie\”).EXISTS” enable_cross_site_access
bind lb vserver <LB vserver name > -policyName append_samesite_cookie -priority 20 -gotoPriorityExpression next -type RESPONSE

請注意,在最新的Chrome更新中,”SameSite”屬性設置為”None”而沒有”secure”屬性的Cookie將被拒絕。

如果所有由Citrix ADC前端的應用程式都有相同的要求來保護其Cookie,您可以將上述Citrix Rewrite Policy綁定到全域http回應覆蓋綁定點,而不是單個 LB Server。

bind rewrite global append_samesite_cookie 20 NEXT -type RES_OVERRIDE

支持舊版流覽器的跨網站存取

有些流覽器版本並沒有按照預期的方式處理”SameSite=None”。例如,它們可能會拒絕將”SameSite”屬性設置為”None”的cookie。如果那些在Cookie中維護使用者資訊的應用,由於應用返回的Cookie被拒絕,使用者資訊將不會作為使用者後續請求的一部分發送到應用。結果是什麼?每個請求都被視為一個新的用戶會話,這可能會妨礙整體的用戶體驗,並會對業務產生影響。

我們需要對某些流覽器和作業系統版本進行例外處理,組成一個流覽器版本的例外列表。如果傳入的http請求來自例外列表中的某個流覽器版本,則跳過重寫Set-Cookie Policy 。你可以通過檢查HTTP請求中的 “User-Agent “頭並提取流覽器和作業系統版本來實現。下面的Citrix Rewrite Policy創建了一個Chrome流覽器版本的例外列表,對於這些版本,跳過附加”SameSite”屬性。

add policy expression exp_chrome “(HTTP.REQ.HEADER(\”User-Agent\”).CONTAINS(\”Chrom\”) && HTTP.REQ.HEADER(\”User-Agent\”).REGEX_SELECT(re/Chrom.*\\d+./).REGEX_SELECT(re/\\d+/).TYPECAST_NUM_T(DECIMAL).BETWEEN(51,66))”
add rewrite policy exception_list “exp_chrome” NOREWRITE

您可以制定其他不相容的流覽器版本的例外列表,然後一起綁定到LB VServer。

add rewrite policy exception_list “exp_chrome || exp_incomp_browser” NOREWRITE
bind lb vserver <vserver name> -policyName exception_list -priority 10 -gotoPriorityExpression end -type RESPONSE
bind lb vserver <vserver name> -policyName append_samesite_cookie -priority 20 -gotoPriorityExpression next -type RESPONSE

如果所有由Citrix ADC前端的應用程式都有相同的要求來保護其Cookie,您可以將上述重寫 Policy 綁定到全域 http 回應覆蓋綁定點。這樣就可以避免為每個特定應用的LB VServer做上述更改。

bind rewrite global exception_list 10 END -type RES_OVERRIDE
bind rewrite global append_samesite_cookie 20 NEXT -type RES_OVERRIDE

請注意,當綁定 Policy 到LB VServer或全域覆蓋綁定點時,請確保”bind”命令中的goto優先順序運算式參數設置為”NEXT”或清單中需要執行的下一個最高優先順序 Policy 。這使得其他現有的Rewrite Policy可以和新的”SameSite”相關 Policy 一起被執行。

Citrix ADC的Rewrite Policy功能使您能夠根據應用訪問模式為”SameSite”屬性設置適當的值,從而加固您的HTTP Cookie。以這種方式保護Cookie,將説明您輕鬆改善應用程式的安全狀態,同時無需更改您當前的應用程式部署。

發表迴響

Powered by WordPress.com.

Up ↑

%d 位部落客按了讚: