Nginx設(shè)置HttpOnly Secure SameSite參數(shù)解決Cookie信息丟失
一、背景說明
項(xiàng)目中使用了Nginx作為反向代理來訪問系統(tǒng),在漏洞掃描的過程中發(fā)現(xiàn)Cookie缺少 SameSite 屬性。我們需要將SameSite屬性設(shè)置為Strict或者 Lax。
二、Cookie安全相關(guān)屬性
HttpOnly :
- 在Cookie中設(shè)置了“HttpOnly”屬性,通過程序(JS腳本、Applet等)將無法讀取到Cookie信息。
- 將HttpOnly 設(shè)置為true 防止程序獲取cookie后進(jìn)行攻擊。
Secure :
- 安全性,指定Cookie是否只能通過https協(xié)議訪問,一般的Cookie使用HTTP協(xié)議既可訪問。
- 設(shè)置了Secure (沒有值),則只有當(dāng)使用https協(xié)議連接時(shí)cookie才可以被頁(yè)面訪問。可用于防止信息在傳遞的過程中被監(jiān)聽捕獲后信息泄漏。
SameSite:
Chrome瀏覽器在51版本后為 Cookie 新增的屬性,用來防止 CSRF 攻擊和用戶追蹤??梢栽O(shè)置三個(gè)值:Strict、 Lax、 None
- Strict:完全禁止第三方 Cookie,跨站點(diǎn)時(shí),任何情況下都不會(huì)發(fā)送 Cookie。換言之,只有當(dāng)前網(wǎng)頁(yè)的 URL 與請(qǐng)求目標(biāo)一致,才會(huì)帶上 Cookie。Set-Cookie: CookieName=CookieValue; SameSite=Strict;
- Lax:規(guī)則稍稍放寬,大多數(shù)情況也是不發(fā)送第三方 Cookie,但是導(dǎo)航到目標(biāo)網(wǎng)址的 Get 請(qǐng)求除外。Set-Cookie: CookieName=CookieValue; SameSite=Lax;設(shè)置了Strict或Lax以后,基本就杜絕了 CSRF 攻擊。當(dāng)然,前提是用戶瀏覽器支持 SameSite 屬性。
- None:Chrome 計(jì)劃將Lax變?yōu)槟J(rèn)設(shè)置。這時(shí),網(wǎng)站可以選擇顯式關(guān)閉SameSite屬性,將其設(shè)為None。不過,前提是必須同時(shí)設(shè)置Secure屬性(Cookie 只能通過 HTTPS 協(xié)議發(fā)送),否則無效。Set-Cookie: key=value; SameSite=None; Secure
瀏覽器F12 在網(wǎng)絡(luò)下查看當(dāng)前狀態(tài),SameSite屬性缺失,我們需要通過配置nginx將SameSite屬性設(shè)置為Strict或者 Lax。
三、配置路徑
在nginx.conf 的 location 節(jié)點(diǎn)下進(jìn)行配置
add_header Set-Cookie 'Path=/;httponly; Secure; SameSite=Lax';
下面是完整的 location 節(jié)點(diǎn)配置
server { listen 443 ssl; server_name test.app.com; root html; index index.html index.htm; ssl_certificate C:/nginx/cert/client.pem; ssl_certificate_key C:/nginx/cert/private.key; ssl_session_timeout 4h; # Enable SSL cache to speed up ssl_session_cache shared:SSL:10m; # intermediate configuration ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305; ssl_prefer_server_ciphers off; client_max_body_size 100m; proxy_http_version 1.1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # HTTP Force Jump to HTTPS proxy_redirect http:// $scheme://; # To resolve nginx 504 issue proxy_connect_timeout 1800s; proxy_send_timeout 1800s; proxy_read_timeout 1800s; client_body_timeout 1800s; # Nginx status location /nginxstatus { stub_status on; access_log logs/nginx-status-$logdate.log; auth_basic "NginxStatus"; } # Application location /api{ # 設(shè)置HttpOnly Secure SameSite參數(shù)解決Cookie跨域丟失 add_header Set-Cookie 'Path=/;httponly; Secure; SameSite=Lax'; proxy_pass http://127.0.0.1:8080; } }
修改后的情況
到此這篇關(guān)于Nginx設(shè)置HttpOnly Secure SameSite參數(shù)解決Cookie信息丟失的文章就介紹到這了,更多相關(guān)Nginx HttpOnly Secure SameSite參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx實(shí)現(xiàn)ChatGPT?API代理步驟
這篇文章主要為大家介紹了Nginx實(shí)現(xiàn)ChatGPT?API代理步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05服務(wù)器的負(fù)載均衡nginx+tomcat實(shí)現(xiàn)動(dòng)靜分離
這篇文章主要為大家介紹了服務(wù)器的負(fù)載均衡nginx+tomcat實(shí)現(xiàn)動(dòng)靜分離的案例實(shí)施步驟以及環(huán)境詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03lnmp環(huán)境中如何為nginx開啟pathinfo
這篇文章主要介紹了lnmp環(huán)境中如何為nginx開啟pathinfo的方法,操作很簡(jiǎn)單,需要的朋友可以參考下2015-01-01Nginx實(shí)現(xiàn)404頁(yè)面的方法小結(jié)
這篇文章主要介紹了Nginx實(shí)現(xiàn)404頁(yè)面的方法小結(jié),需要的朋友可以參考下2017-08-08關(guān)于使用Keepalived實(shí)現(xiàn)Nginx的自動(dòng)重啟及雙主熱備高可用問題
這篇文章主要介紹了使用Keepalived實(shí)現(xiàn)Nginx的自動(dòng)重啟及雙主熱備高可用,本文通過幾個(gè)問題解析幫助大家學(xué)習(xí)Keepalived實(shí)現(xiàn)Nginx的自動(dòng)重啟的相關(guān)知識(shí),需要的朋友可以參考下2021-09-09