JWT:
csrf 攻擊無法獲取第三方的 cookie,而是直接使用 cookie進行查詢的時候會自動攜帶 cookie。
xss攻擊通過代碼注入可以獲取 cookie。需要設置轉義。
方式一、客戶端使用 cookie直接認證,需要設置 cookie為 httpOnly,可以防止 xss攻擊。但是無法防止 csrf攻擊。需要設置偽隨機數 X-XSRF-TOKEN。(推薦!不 需要處理 xss,並且xsrf 隨機數有完善的應用機制)
方式二、 客戶端使用 auth授權頭認證,token存儲在 cookie中,需要防止xss攻擊。可以防止 csrf攻擊,因為 csrf只能在請求中攜帶 cookie,而這里必須從 cookie中拿出相應的值並放到 authorization 頭中。實際上cookie不能跨站(同源政策)被取出,因此可以避免 csrf 攻擊。(適用於 ajax請求或者 api請求,可以方便的設置 auth頭)
方式三、可以將token存儲在 localstorage里面,需要防止xss攻擊。實現方式可以在一個統一的地方復寫請求頭,讓每次請求都在header中帶上這個token, 當token失效的時候,后端肯定會返回401,這個時候在你可以在前端代碼中操作返回登陸頁面,清除localstorage中的token。(適用於 ajax請求或者 api請求,可以方便的存入 localstorage)
設置 HTTPS,可以防止提交時的用戶名或者密碼被攔截或讀取。