日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

**16.app后端如何保证通讯安全--url签名

發(fā)布時間:2024/4/13 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 **16.app后端如何保证通讯安全--url签名 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

app和后端的通訊過程中,api請求有可能被別人截取或不小心泄露。那么,怎么保證api請求的安全呢?在這篇文章中,介紹一種常見的保證api請求安全的做法--url簽名。


1. url簽名詳解



  在前一篇文章<15.app后端怎么設(shè)計(jì)用戶登錄方案>中,服務(wù)器中驗(yàn)證用戶名和密碼都正確后,生成一個隨機(jī)的不重復(fù)的token字符串(例如"daf32da456hfdh"),在redis或memcache中維護(hù)一個映視表,建立token字符串和用戶信息的對應(yīng)關(guān)系表,例如,把token字符串"daf32da456hfdh"和用戶id"5"對應(yīng)起來,服務(wù)器把token字符串返回給app用作身份驗(yàn)證。


  這個身份驗(yàn)證是依賴于token字符串。如果用戶泄露了自己的url, 那很大程度上token也被別人泄漏了。


  怎么防止token被泄露?不讓token在網(wǎng)絡(luò)上傳輸就行。


  注意,這個url簽名的方法是和前面<15.app后端怎么設(shè)計(jì)用戶登錄方案>緊密聯(lián)系在一起的,沒看過前面一篇文章請先看。


  (1) 服務(wù)器中驗(yàn)證用戶名和密碼都正確后,把token字符串和用戶id都返回給客戶端,例如token字符串"daf32da456hfdh"和用戶id"5"。


  (2)假設(shè)api請求為"test.com/user/info", 通過token字符串"daf32da456hfdh"生成md5簽名后: md5("test.com/user/info&token=daf32da456hfdh”)= C99DC0C22437AC275C08CE4A9708B25A


  于是,api請求加上簽名和用戶標(biāo)識后就是 "test.com/user/info?userId=5&sign= C99DC0C22437AC275C08CE4A9708B25A"


  (3)服務(wù)器接收到這個url后,用(2)的算法生成簽名和sign參數(shù)對比,如果發(fā)現(xiàn)相等的話,就表示這個url是有有效,那就繼續(xù)執(zhí)行這個api調(diào)用。


  用上面的這個方法,就能避免token在api調(diào)用時泄露。


  上面的方法還有一個問題,因?yàn)檫@個api請求"test.com/user/info?userId=5&sign= C99DC0C22437AC275C08CE4A9708B25A"上沒有過期時間,假設(shè)別人拿到這個api的請求,就能反復(fù)調(diào)用了。


  改進(jìn)方法是在傳遞的參數(shù)中增加時間戳,當(dāng)發(fā)現(xiàn)這個時間戳離現(xiàn)在的時間已經(jīng)很久了,就判斷這個url已經(jīng)失效了。


  但用時間戳怎么保證app的時間和服務(wù)器的時間同步?在app每次啟動時和服務(wù)器同步時間,然后在app內(nèi)建一個時鐘,時間戳在這個app的內(nèi)部時鐘獲取,防止用戶修改了手機(jī)的時間導(dǎo)致時間不一致。


  于是有了下面的改進(jìn)方法:


  (1)假設(shè)api請求為"test.com/user/info", 用token字符串"daf32da456hfdh"和時間戳生成md5簽名后: md5("test.com/user/info?userId=5&token=daf32da456hfdh&timestamp=1425860757”)= C116161A6F430343B6CECF08562F1371


  于是,api請求加上簽名和用戶標(biāo)識后就是 "test.com/user/info?userId=5&timestamp=1425860757&sign= C116161A6F430343B6CECF08562F1371"


  (2)服務(wù)器接收到這個api請求,如果發(fā)現(xiàn)收到這個url請求的時間和time=1425860757相隔很久,就判斷出這個url是被別人截取來反復(fù)調(diào)用了。如果時間合法,那就用(1)的算法再判斷sign是否一致


2. url簽名的不足之處



  url簽名有兩個缺點(diǎn):


  1.當(dāng)用戶第一次登錄后token是明文返回,有被截取的風(fēng)險


  2. url簽名只能保護(hù)token值卻沒法保護(hù)其他敏感數(shù)據(jù),例如,當(dāng)用戶更新自己的個人信息時,所有的信息在傳輸過程中應(yīng)該是被加密的


  怎么解決這兩個問題?使用下篇介紹的對稱加密的算法就可以了。

?

http://blog.csdn.net/newjueqi/article/details/44154791

總結(jié)

以上是生活随笔為你收集整理的**16.app后端如何保证通讯安全--url签名的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。