加密會話(SSL)Cookie 中缺少 Secure 屬性
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iMxQDe0IDMx0SZnFWbp9CX0AzLcBjMwIzLcNHZh9GbwV3LcRnblRnbvNWLwd3Lc52YuMWeldWYw5yd3d3Lc9CX6MHc0RHaiojIsJye.png)
AppScan 發現加密會話(SSL)使用的是沒有“secure”屬性的 cookie。
因為不想修改後端代碼,是以希望能從nginx上将其修複。
沒修複之前
沒修複之前,這個cookie是沒有secure參數的,如上圖,上面的那些secure則是我在添加了一個 add_header Set-Cookie “Secure”; 獲得的,雖然網上大部分的教程都是這樣的,但是不符合此次修複的要求,是以沒有什麼用途
搜尋過程中,發現一篇文章能加上這個參數:
在 nginx 的 location 中配置
# 隻支援 proxy 模式下設定,SameSite 不需要可删除,如果想更安全可以把 SameSite 設定為 Strict
proxy_cookie_path / "/; httponly; secure; SameSite=Lax";
參考示例
server {
listen 443 ssl http2;
server_name www.cat73.org;
server {
listen 443 ssl http2;
server_name www.cat73.org;
ssl_certificate /etc/letsencrypt/live/cat73.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cat73.org/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/cat73.org/chain.pem;
add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options SAMEORIGIN;
add_header Strict-Transport-Security "max-age=15768000";
location / {
root /var/www/html;
}
location /api {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
######### 在這裡設定 #########
proxy_cookie_path / "/; httponly; secure; SameSite=Lax";
}
}
之後再檢視cookie上的參數是否存在,成功
修複後效果圖