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

公司的電子商城在十九大等保安檢時期被折騰出去,結果這幾天又折騰回來了,據說還會是明年大數據研究院的主要開發項目。結果回來沒幾天被測試中心的人在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";


2.png


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

1.png


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


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


Cookie的HttpOnly屬性,指示瀏覽器不要在除HTTP(和HTTPS)請求之外暴露Cookie。一個有HttpOnly屬性的Cookie,是不可以通過例如調用JavaScript(引用document.cookie)這種非HTTP方式來訪問。因此,也不可能通過跨域腳本(一種非常普通的***技術)來偷走這種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 (屈大神的文章,非常值得一看!)


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

wKioL1l16m3BMYDKAACPHEqd55Q687.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章