一般來說sessionId有跨域安全問題,而token卻沒有,我的理解是sessionId怕跨域問題,而token不怕的原因是不是因為前者是基于cookie自動攜帶而后者是手動攜帶?當有跨域攻擊時,受害者點擊鏈接會自動帶上瀏覽器cookie上的sessionId而token一般是程序員在程序中寫ajax時,手動放在參數或者header中的,所以沒有跨域安全問題?如果token也放在cookie里,會和sessionId一樣出現跨域安全問題對不對?
那么像這種 https://blog.csdn.net/moshowg... zuul網關開放跨域應該沒有安全問題吧?
3 回答

汪汪一只貓
TA貢獻1898條經驗 獲得超8個贊
基于cookie的認證都存存在跨越安全問題,不管是自動的方式還是手動的方式,只不過token的方式是通過和認證中心經過幾次重定向,將token傳遞給了其他域,題主參考下sso的認證過程就知道了,oath的認證過程也差不多。

qq_笑_17
TA貢獻1818條經驗 獲得超7個贊
不知道你說的跨域安全,是不是指CSRF?
如果是,那就先搞清楚csrf什么回事:
- 用戶正常登錄了A網站,生成了sessionid或者token
- 用戶在未退出A時,訪問了惡意站點B,B通過類似 <img src="A/xxx">的方式,偷偷以“用戶身份”訪問了A
再來看問題:
- 只要你登錄了,就獲得登錄憑證(sessionid或token),這個憑證是你下次訪問要傳回給服務端的,所以,你要“保存”在客戶端。
- 傳統做法,sessionid是放在cookie的,這樣,你下次訪問,瀏覽器就會“自動帶上”,但并不是“必須這樣做的”。你了解session的原理后,sessionid同樣可以放在header(甚至是get參數或post參數),只是這樣,瀏覽器就不會自動帶,需要你手工傳了,這跟token放在header同一個道理。
- 回傳的問題,通過src的方式隱藏調用,瀏覽器默認是會自動帶上cookie的,但通過ajax調用默認好像是不帶的(我寫前端少,這個不確認)
所以,token放cookie其實有兩層意思,一是保存在客戶端cookie,二是 認證協議里的定義(傳輸方式)。 比如你將token放cookie了,但服務端認的還是header里的token,那你請求時自動在cookie里帶上來的token是沒有用的。
添加回答
舉報
0/150
提交
取消