APP登錄自動登錄—token

調(diào)用后端接口怎么樣才安全单芜?

在APP中保存登錄數(shù)據(jù)蜕该,每次調(diào)用接口時傳輸

程序員總能給自己找到偷懶的方法,有的程序為了省事洲鸠,會在用戶登錄后堂淡,直接把用戶名和密碼保存在本地,然后每次調(diào)用后端接口時作為參數(shù)傳遞扒腕。真省事兒熬畹怼!可這種方法簡單就像拿著一袋子錢在路上邊走邊喊“快來搶我呀瘾腰!快來搶我呀皆的!”,一個小小的嗅探器就能把用戶的密碼拿到手蹋盆,如果用戶習(xí)慣在所有地方用一個密碼费薄,那么你闖大禍了,黑客通過撞庫的方法能把用戶的所有信息一鍋端栖雾。

登錄時請求一次token楞抡,之后用token調(diào)用接口

這是比較安全的方式,用戶在登錄時析藕,APP調(diào)用獲取token的接口(比如 http://api.abc.com/get_token/)召廷,用post將用戶名和密碼的摘要傳遞給服務(wù)器,然后服務(wù)器比對數(shù)據(jù)庫中的用戶信息噪径,匹配則返回綁定該用戶的token(這一般翻譯為令牌柱恤,很直觀的名字,一看就知道是有了這玩意找爱,就會對你放行)梗顺,而數(shù)據(jù)庫中,在用戶的token表中也同時插入了這個token相關(guān)的數(shù)據(jù):這個token屬于誰车摄?這個token的有效期是多久寺谤?這個token當(dāng)前登錄的ip地址是仑鸥?這個token對應(yīng)的deviceid是?……
這樣即便token被有心人截獲变屁,也不會造成太大的安全風(fēng)險眼俊。因為沒有用戶名和密碼,然后如果黑客通過這個token偽造用戶請求粟关,我們在服務(wù)器端接口被調(diào)用時就可以對發(fā)起請求的ip地址疮胖、user-agent之類的信息作比對,以防止偽造闷板。再然后澎灸,如果token的有效期設(shè)得小,過一會兒它就過期了遮晚,除非黑客可以持續(xù)截獲你的token性昭,否則他只能干瞪眼。(插一句題外話:看到這里县遣,是不是明白為什么不推薦在外面隨便接入來歷不明的wifi熱點了糜颠?)

tips:token如何生成? 可以根據(jù)用戶的信息及一些隨機(jī)信息(比如時間戳)再通過hash編碼(比如
md5萧求、sha1等)生成唯一的編碼其兴。
tips:token的安全級別,取決于你的實際需求饭聚,所以如果不是涉及財產(chǎn)安全的領(lǐng)域忌警,并不建議太嚴(yán)格
(比如用戶走著走著,3G換了個基站秒梳,閃斷了一下IP地址變了法绵,尼瑪token過期了,這就屬于為了不必要
的安全丟了用戶體驗酪碘,當(dāng)然如果變換的IP地址跨省的話還是應(yīng)該驗證一下的朋譬,想想QQ有時候會讓填驗證碼
就明白了)。
tips:接口在返回信息時兴垦,可以包含本次請求的狀態(tài)徙赢,比如成功調(diào)用,那么result['status']可能就
是'success'探越,而反之則是'error'狡赐,而如果是'error',則result['errcode']中就可以包含錯誤
的原因钦幔,比如errcode中是'invalid_token'就可以告訴APP這個token過期或無效枕屉,這時APP應(yīng)彈出
登錄框或者用本地存儲的用戶名或密碼再次請求token(用戶選擇“記住密碼”,就應(yīng)該在本地保存用戶名
和密碼的摘要鲤氢,方法見plus.storage的文檔)搀擂。

更安全一點西潘,獲取token通過SSL

剛才的方法,機(jī)智一點兒的讀者大概會心存疑慮:那獲取token時不還是得明文傳輸一次密碼嗎哨颂?
是的喷市,你可以將這個獲取token的地址,用SSL來保護(hù)( 比如https://api.abc.com/get_token/ )威恼,這樣黑客即使截了包品姓,一時半會兒也解不出什么信息。
SSL證書的獲取渠道很多箫措,我相信你總有辦法查到缭黔,所以不廢話了。不過話說namecheap上的SSL證書比godaddy的要便宜得多……(這是吐槽)

tips:前段時間OpenSSL漏洞讓很多服務(wù)器遭殃蒂破,所以如果自己搭服務(wù)器,一定記得裝補(bǔ)丁别渔。
tips:可以把所有接口都弄成SSL的嗎附迷?可以。但會拖慢服務(wù)器哎媚,如果是配置并不自信的VPS喇伯,建議不折騰。

還要更更安全(這標(biāo)題真省事)

還記得剛才APP向服務(wù)器請求token時拨与,可以加入的用戶信息嗎稻据?比如用戶的設(shè)備deviceid。
如果我們在調(diào)用接口時买喧,還附帶一個當(dāng)前時間戳參數(shù)timestamp捻悯,同時,用deviceid和這個時間戳再生成一個參數(shù)sign淤毛,比如 md5(deviceid timestamp token)這樣的形式今缚。而服務(wù)端首先驗證一下參數(shù)中的時間戳與當(dāng)前服務(wù)器時間是否一致(誤差保持在合理范圍內(nèi)即可,比如5分鐘)低淡,然后根據(jù)用戶保存在服務(wù)器中的deviceid來對參數(shù)中的時間戳進(jìn)行相同的變形姓言,驗證是否匹配,那便自然“更更安全”了蔗蹋。

tips:如果對整個調(diào)用請求中的參數(shù)進(jìn)行排序何荚,再以deviceid和timestamp加上排序后的參數(shù)來對整個調(diào)用生成1個sign,黑客即使截獲sign猪杭,不同的時間點餐塘、參數(shù)請求所使用的sign也是不同的,難以偽造胁孙,自然會更安全唠倦。當(dāng)然称鳞,寫起來也更費事。

tips:明白了原理稠鼻,整個驗證過程是可以根據(jù)自己的需求改造的冈止。

參考文檔:
設(shè)計基于HTML5的APP登錄功能及安全調(diào)用接口的方式(原理篇)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市候齿,隨后出現(xiàn)的幾起案子熙暴,更是在濱河造成了極大的恐慌,老刑警劉巖慌盯,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件周霉,死亡現(xiàn)場離奇詭異,居然都是意外死亡亚皂,警方通過查閱死者的電腦和手機(jī)俱箱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灭必,“玉大人狞谱,你說我怎么就攤上這事〗欤” “怎么了跟衅?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長播歼。 經(jīng)常有香客問我伶跷,道長,這世上最難降的妖魔是什么秘狞? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任叭莫,我火速辦了婚禮,結(jié)果婚禮上烁试,老公的妹妹穿的比我還像新娘食寡。我一直安慰自己,他們只是感情好廓潜,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布抵皱。 她就那樣靜靜地躺著,像睡著了一般辩蛋。 火紅的嫁衣襯著肌膚如雪呻畸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天悼院,我揣著相機(jī)與錄音伤为,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛绞愚,可吹牛的內(nèi)容都是我干的叙甸。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼位衩,長吁一口氣:“原來是場噩夢啊……” “哼裆蒸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起糖驴,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤僚祷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后贮缕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辙谜,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年感昼,在試婚紗的時候發(fā)現(xiàn)自己被綠了装哆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡定嗓,死狀恐怖烂琴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜕乡,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布梗夸,位于F島的核電站层玲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏反症。R本人自食惡果不足惜辛块,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铅碍。 院中可真熱鬧润绵,春花似錦、人聲如沸胞谈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烦绳。三九已至卿捎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間径密,已是汗流浹背午阵。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留享扔,地道東北人底桂。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓植袍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親籽懦。 傳聞我的和親對象是個殘疾皇子于个,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容