* 1.cookie沒有使用http-only;
* 2.cookie沒有攜帶secure屬性;
* 3.http頭中需要配置“X-Frame-Options:SAMEORIGIN”;
以上這幾點可以通過nginx的配置來輕松實現,具體方法就是在需要更改的網頁server的配置里面添加下面幾句話。如圖:
~~~bash
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,是不可以通過例如調用JavaScript(引用document.cookie)這種非HTTP方式來訪問。因此,也不可能通過跨域腳本(一種非常普通的攻擊技術)來偷走這種Cookie。
X-Frame-Options HTTP 響應頭是用來給瀏覽器指示允許一個頁面可否在 , 或者 中展現的標記。網站可以使用此功能,來確保自己網站的內容沒有被嵌到別人的網站中去,也從而避免了點擊劫持 (clickjacking) 的攻擊。它有三個可選擇項:
~~~bash
DENY:表示該頁面不允許在 frame 中展示,即便是在相同域名的頁面中嵌套也不允許;
SAMEORIGIN:表示該頁面可以在相同域名頁面的 frame 中展示;
ALLOW-FROM uri地址:表示該頁面可以在指定來源的 frame 中展示;
~~~
如果設置為 DENY,**不光在別人的網站 frame 嵌入時會無法加載,在同域名頁面中同樣會無法加載**。另一方面,如果設置為 SAMEORIGIN,那么頁面就可以在同域名頁面的 frame 中嵌套。
這里還要額外注意一下!配置了Cookie的HttpOnly屬性和Secure屬性之后,如果測試中心的人使用的協議是http而不是https的話,會有“瀏覽器請求后端服務時header不會帶上cookie參數”的現象,那是因為“由于secure屬性的存在,導致瀏覽器在與服務器通信時不會使用該cookie”。這個時候就需要把secure="true"這個配置去掉才可以達到正確測試的目的。