把登錄態(tài)信息寫在cookie里面,如果被用戶抓包之后,偽造cookie然后發(fā)送請求,這種情況怎么避免呢?加粗文字
為了保證安全:請不停地重設(shè)session的重設(shè);將過期時間設(shè)置短一些;監(jiān)控referrer與userAgent的值;使用HttpOnly禁止腳本讀取Cookie。這些措施并非萬無一失,但是增加了黑客的難度,因此也是有效的。
https://blog.fundebug.com/201...
傳的時候先加密唄,使用 md5 或者 sha1 加密算法的話,不知道 key 的情況下話根本不可能(或者說成本過高)反推 token。
如果你說,那我直接拿到這個 token 再偽造不就行了么,確實是沒錯,所以在此基礎(chǔ)上還要加上 session,一般就是 cookie 中存?zhèn)€ session_id,然后服務(wù)端通過一個 secret 去驗證 session_data,session_id + cookie 基本就安全了。
另外還可以給 cookie 生成簽名,生成簽名的 secret 同樣保存在服務(wù)端,然后每次請求驗證一下當(dāng)前生成的簽名和之前的簽名是否一樣。比如 username 為 foo,根據(jù)某個加密算法和 secret 加密后的簽名為 aaa,客戶端保存為 username=foo_aaa,然后有個人篡改 username 為 bar_aaa,傳到服務(wù)器之后發(fā)現(xiàn) bar 生成的簽名和 aaa 不一致,則證明 cookie 已被篡改。
其他的話,還有 httponly、secure 等配置,這些是防止第三方篡改 cookie 的設(shè)置,同時嘗試使用 https,這個是防止請求傳輸過程中中間者進行監(jiān)聽。
個人拙見,如有錯誤,還望指正。
最重要的是要防被抓包,其他的都只能加大被偽造的難度,并不能完全避免被“偽造”。
畢竟,無論是 cookie 或 session,或 token ,客戶端都要有一個登錄憑證,后端只能認(rèn)這個憑證,如果憑證都被別人拿起來,那后端也沒有什么辦法。
當(dāng)然,你可以通過多個認(rèn)證方式結(jié)合,加大偽造的難度。
比如:
cookie 中的字段意義不要太容易被看懂,多放幾個混淆一下,有些是請求的參數(shù),有些是認(rèn)證身份的;
不只判斷 cookie,還要判斷客戶端是不是同一個,ip是不是同一個;
不只 cookie,localStorge 和 sessionStorage 也放一些認(rèn)證的字段。
....
另外,說一下幾種無效的方法:
這是沒有用的,你刷新的時候還不是用舊的換新的,偽造的人手里有舊的,當(dāng)然就可以獲得新的。
當(dāng)然,可能加大偽造難度。
后端要認(rèn)證身份,必然需要能解密的算法,如果是用 md5 這種單身加密,后端根本沒有辦法認(rèn)證用戶身份。前端使用的加密后的字符串必須是由后端來加密的。
如果采用可解密的算法,但因為前端代碼別人是可以看到的,加密的方法自然也可以看到,使用已有的加密算法完全沒有意義,要使用一個只有自己才能解密的加密算法是比較難的。
總之,還是那句話:最重要的是要防被抓包。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。