天天看點

java cookie secure_Cookie的Secure屬性和HttpOnly屬性

基于安全的考慮,需要給cookie加上Secure和HttpOnly屬性,HttpOnly比較好了解,設定HttpOnly=true的cookie不能被js擷取到,無法用document.cookie打出cookie的内容。

Secure屬性是說如果一個cookie被設定了Secure=true,那麼這個cookie隻能用https協定發送給伺服器,用http協定是不發送的。換句話說,cookie是在https的情況下建立的,而且他的Secure=true,那麼之後你一直用https通路其他的頁面(比如登入之後點選其他子頁面),cookie會被發送到伺服器,你無需重新登入就可以跳轉到其他頁面。但是如果這是你把url改成http協定通路其他頁面,你就需要重新登入了,因為這個cookie不能在http協定中發送。

例子是:

前提條件:https://localhost:9102應用對cookie設定了Secure=true

1. 通路 https://localhost:9102/manager

2. 輸入使用者名、密碼,用IE或者Chrome的developer tool會看到response的header裡,set-cookie的值裡有Secure屬性

3. 登入後,繼續通路https://localhost:9102/manager#user,可以正常看到内容

4. 修改url,通路http://localhost:9100/manager#domain,會跳轉到登入頁面,因為cookie在http協定下不發送給伺服器,伺服器要求使用者重新登入