1. 程式人生 > >通過nginx配置修改網頁cookie屬性

通過nginx配置修改網頁cookie屬性

cookie secure httponly x-frame-options nginx

公司的電子商城在十九大等保安檢時期被折騰出去,結果這幾天又折騰回來了,據說還會是明年大數據研究院的主要開發項目。結果回來沒幾天被測試中心的人在cookie方面發現了幾個問題,如下:

  • 1.cookie沒有使用http-only;

  • 2.cookie沒有攜帶secure屬性;

  • 3.http頭中需要配置“X-Frame-Options:SAMEORIGIN”;


以上這幾點可以通過nginx的配置來輕松實現,具體方法就是在需要更改的網頁server的配置裏面添加下面幾句話。如圖:

    add_header                  Set-Cookie "HttpOnly";
    add_header                  Set-Cookie "Secure";
    add_header                  X-Frame-Options "SAMEORIGIN";


技術分享圖片


然後保存配置文件,平滑重啟nginx即可,通過chrome在目標網頁裏按下“ctrl+shift+c”,先選擇好“network”,然後重新刷新一下界面,選擇域名,對應域名下點擊headers,就會看到cookie的配置情況,如圖:

技術分享圖片


看到配置已經生效。那麽這幾個配置主要是幹什麽的呢?其實主要都是防範XSS攻擊(跨域腳本攻擊)的。


Cookie的Secure屬性,意味著保持Cookie通信只限於加密傳輸,指示瀏覽器僅僅在通過安全/加密連接才能使用該Cookie。如果一個Web服務器從一個非安全連接裏設置了一個帶有secure屬性的Cookie,當Cookie被發送到客戶端時,它仍然能通過中間人攻擊來攔截。


Cookie的HttpOnly屬性,指示瀏覽器不要在除HTTP(和HTTPS)請求之外暴露Cookie。一個有HttpOnly屬性的Cookie,不能通過非HTTP方式來訪問,例如通過調用JavaScript(例如,引用document.cookie),因此,不可能通過跨域腳本(一種非常普通的攻擊技術)來偷走這種Cookie。


X-Frame-Options HTTP 響應頭是用來給瀏覽器指示允許一個頁面可否在 <frame>, <iframe> 或者 <object> 中展現的標記。網站可以使用此功能,來確保自己網站的內容沒有被嵌到別人的網站中去,也從而避免了點擊劫持 (clickjacking) 的攻擊。它有三個可選擇項:

DENY:表示該頁面不允許在 frame 中展示,即便是在相同域名的頁面中嵌套也不允許;
SAMEORIGIN:表示該頁面可以在相同域名頁面的 frame 中展示;
ALLOW-FROM uri地址:表示該頁面可以在指定來源的 frame 中展示;

如果設置為 DENY,不光在別人的網站 frame 嵌入時會無法加載,在同域名頁面中同樣會無法加載。另一方面,如果設置為 SAMEORIGIN,那麽頁面就可以在同域名頁面的 frame 中嵌套。


這裏要額外註意一下!

配置了Cookie的HttpOnly屬性和Secure屬性之後,如果測試中心的人使用的協議是http而不是https的話,會有“瀏覽器請求後端服務時header不會帶上cookie參數”的現象,那是因為“由於secure屬性的存在,導致瀏覽器在與服務器通信時不會使用該cookie”。這個時候就需要把secure="true"這個配置去掉才可以達到正確測試的目的。



參考資料:https://imququ.com/post/my-nginx-conf-for-security.html (屈大神的文章,非常值得一看!)


最後的最後,如果您覺得本文對您升職加薪有幫助,那麽請不吝贊助之手,刷一下下面的二維碼,贊助本人繼續寫更多的博文!

技術分享圖片

通過nginx配置修改網頁cookie屬性