java - jwt token安全性問(wèn)題.
問(wèn)題描述
A,B系統(tǒng)是前后端分離的。(兩個(gè)系統(tǒng)跨域)現(xiàn)在A系統(tǒng)一個(gè)頁(yè)面跳轉(zhuǎn)到B系統(tǒng)中。現(xiàn)在是用的跳轉(zhuǎn)到B系統(tǒng),地址欄中帶了一個(gè)加密token (包含用戶id).幫其自動(dòng)登陸上了。此頁(yè)面顯示的商品信息和該用戶的折扣。
此時(shí)假如我知道了別人的token,然后修改地址欄。頁(yè)面就變成別人的信息了。
此時(shí)我都不知道別人的賬號(hào)密碼,然后就獲得了別人的一些用戶信息.
問(wèn)題解答
回答1:https加密吧,Http協(xié)議本身就不安全,明文的。這幾位說(shuō)的對(duì),我說(shuō)錯(cuò)了
回答2:最簡(jiǎn)單的辦法,也是比較安全的辦法。在b站幫其登錄的時(shí)候,再?gòu)棿慰颉W屍浯_認(rèn)密碼!
有個(gè)叫csrf的令牌或者。隨機(jī)數(shù)的辦法。值得你擁有。csrf令牌就是限制這樣的跨域攻擊的
JWT的驗(yàn)證token是要放到header里的,你可以考慮授權(quán)認(rèn)證
回答3:首先token的出現(xiàn)就是為了解決用戶驗(yàn)證的問(wèn)題 既然是兩個(gè)系統(tǒng)了就應(yīng)該避免自動(dòng)登錄的這種情況 這是很不安全的。不過(guò)你既然有這樣的需求 那只有盡量側(cè)面規(guī)避了,給個(gè)方案:token中盡量避免敏感信息 ,其次就是在授權(quán)跨系統(tǒng)的token時(shí) 把這個(gè)token的授權(quán)設(shè)為一次性的 并且壓縮token的有效時(shí)間 如此token只辦30分鐘內(nèi)有效其實(shí)你可以參考現(xiàn)在的很多第三方登錄 如微博等 授權(quán)的token都只包含昵稱,頭像等少量信息
回答4:題主這是真實(shí)場(chǎng)景的情況嗎?
如果你能得到別人的 token,相當(dāng)于竊聽(tīng)了他的密碼,這不是 JWT 的安全問(wèn)題。
與 JWT 本身有關(guān)的措施,就是加入過(guò)期時(shí)間,強(qiáng)制 JWT 在一定時(shí)間后失效。
根據(jù) JWT 規(guī)范,JWT 最好是放在請(qǐng)求頭部 Authorization 中,不要放在 URL 里。
HTTPS 是有用的。
相關(guān)文章:
1. html5 - 如何實(shí)現(xiàn)帶陰影的不規(guī)則容器?2. javascript - 循環(huán)嵌套多個(gè)promise應(yīng)該如何實(shí)現(xiàn)?3. mysql優(yōu)化 - 關(guān)于mysql分區(qū)4. css - 移動(dòng)端字體設(shè)置問(wèn)題5. objective-c - iOS開(kāi)發(fā)支付寶和微信支付完成為什么跳轉(zhuǎn)到了之前開(kāi)發(fā)的一個(gè)app?6. css3 - rem布局下,用戶瀏覽器的最小字號(hào)是12px怎么辦?7. vue.js - vue 打包后 nginx 服務(wù)端API請(qǐng)求跨域問(wèn)題無(wú)法解決。8. 請(qǐng)教各位大佬,瀏覽器點(diǎn) 提交實(shí)例為什么沒(méi)有反應(yīng)9. 前端 - IE9 css兼容問(wèn)題10. javascript - ionic2 input autofocus 電腦成功,iOS手機(jī)鍵盤不彈出
