国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

php接口安全-php接口加密的四個(gè)方案

2020-03-22 20:13:07
字體:
供稿:網(wǎng)友
本篇文章給大家?guī)淼膬?nèi)容是關(guān)于php接口安全:php接口加密的四個(gè)方案,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

作為一名互聯(lián)網(wǎng)Coder,無論你是前端或者后端你都要對(duì)http請(qǐng)求要有一定的了解,知道http特性,要清楚的了解http里面的Request與Response是什么,知道為什么網(wǎng)站會(huì)存在cookie,session,驗(yàn)證碼的意義和必要性。因?yàn)樘接慉PP接口的安全性就是在探討HTTP請(qǐng)求的安全性。

一般在PC端,我們是通過加密的cookie來做會(huì)員的辨識(shí)和維持會(huì)話的;但是cookie是屬于瀏覽器的本地存儲(chǔ)功能。APP端不能用,所以我們得通過token參數(shù)來辨識(shí)會(huì)員;而這個(gè)token該如何處理呢?

首先,先說說在做該接口加密前,我一共經(jīng)歷的四個(gè)方案:

方案一
與APP端開發(fā)人員約定特定的md5組合算法,然后兩端比對(duì)一下,如果相同就allow,不相同就deny;
但是,這也是不安全的,如果APP程序被反編譯,這些約定的算法就會(huì)暴露,特別是在安卓APP中,有了算法,完全就可以模擬接口請(qǐng)求通過驗(yàn)證;

方案二
數(shù)據(jù)庫(kù)會(huì)員表的password是帶上了隨機(jī)密竄并經(jīng)過雙重加密的md5值;在用戶登錄的時(shí)候,我返回會(huì)員相應(yīng)的uid和password,password雖然是明文的,別人知道也不能登錄,畢竟是經(jīng)過加密的,然后每次請(qǐng)求接口的時(shí)候user_id=333 token=aa37e10c7137ac849eab8a2d5020568f,通過主鍵uid可以很快的找到當(dāng)前uid對(duì)應(yīng)的token,然后再來比對(duì);
但是這樣想法是too yang too simple的,抓包的人雖然不能通過密文密碼來登錄該會(huì)員,然而一旦知道了這個(gè)token,除非用戶更改密碼,否則也可以一直通過這個(gè)token來操作該會(huì)員的相關(guān)接口;

方案三
通過對(duì)稱加密算法,該加密算法對(duì)uid+網(wǎng)站公鑰進(jìn)行時(shí)效加密,在一定時(shí)效內(nèi)可用。在會(huì)員登錄成功時(shí),服務(wù)器端對(duì)該ID加密后返回給客戶端,客戶端每次請(qǐng)求接口的時(shí)候帶上該參數(shù),服務(wù)器端通過解密認(rèn)證;
但是這樣做,也是不安全的。因?yàn)椋劳獠环纼?nèi),聽說這次的攜程宕機(jī)就是因?yàn)閮?nèi)部離職人員的惡意操作。內(nèi)部不懷好意的人員如果知道相應(yīng)的算法規(guī)則后,就算沒有數(shù)據(jù)庫(kù)權(quán)限,也可以通過接口來操作相關(guān)會(huì)員;

方案四
會(huì)員登錄的時(shí)候請(qǐng)求登錄接口,然后服務(wù)器端返回給客戶端一個(gè)token,該token生成的規(guī)則是 網(wǎng)站公鑰 + 當(dāng)前uid + 當(dāng)前時(shí)間戳 + 一段隨機(jī)數(shù)雙重加密,根據(jù)需求決定是把該token放進(jìn)cache等一段時(shí)間自動(dòng)失效,還是放進(jìn)數(shù)據(jù)庫(kù)(如果要放進(jìn)數(shù)據(jù)庫(kù)的話,單獨(dú)拎出一張表來,順便記錄用戶的登錄,登出時(shí)間),在用戶登出登錄的時(shí)候改變一下,確保該token只能在用戶人為登出登錄之間有用。
為保安全,應(yīng)保證讓用戶在一段時(shí)間內(nèi)自動(dòng)退出;此方案配合Linux和數(shù)據(jù)庫(kù)的權(quán)限管理可以防外又防內(nèi);

其他接口開發(fā)的注意事項(xiàng)

數(shù)據(jù)格式最好使用JSON格式數(shù)據(jù),因?yàn)镴SON有較好的跨平臺(tái)性。在生成JSON的時(shí)候,要注意json的兩種格式:對(duì)象(字典) 與 數(shù)組;mobile端開發(fā)語(yǔ)言中沒有類似PHP中的foreach不能遍歷對(duì)象,只能遍歷數(shù)組,他們對(duì)對(duì)象的操作一般都是通過鍵名去取鍵值。

不管是成功,還是失敗。接口必須提供明確的數(shù)據(jù)狀態(tài)信息,并且不能返回NULL,如果返回NULL的話,在IOS端會(huì)崩掉。

相關(guān)推薦:

PHP如何實(shí)現(xiàn)二維碼的生成以及識(shí)別(代碼)

php導(dǎo)出csv格式的Excel文件的實(shí)現(xiàn)代碼

php和ajax怎么實(shí)現(xiàn)表格的實(shí)時(shí)編輯(附代碼)

以上就是php接口安全:php接口加密的四個(gè)方案的詳細(xì)內(nèi)容,PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 芜湖县| 通城县| 三明市| 吉林市| 宁乡县| 娱乐| 台湾省| 葫芦岛市| 松滋市| 仙居县| 阿坝县| 应用必备| 洞头县| 兰溪市| 普陀区| 濉溪县| 宜兰市| 宁阳县| 乌拉特前旗| 沾化县| 湟中县| 五河县| 马龙县| 昆山市| 磐安县| 绩溪县| 绵阳市| 遂宁市| 会昌县| 老河口市| 西峡县| 濮阳市| 封丘县| 通榆县| 那曲县| 驻马店市| 西平县| 兴宁市| 白朗县| 汝城县| 景洪市|