国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
App開放接口api安全性

前言

在app開放接口api的設(shè)計(jì)中,避免不了的就是安全性問題,因?yàn)榇蠖鄶?shù)接口涉及到用戶的個(gè)人信息以及一些敏感的數(shù)據(jù),所以對(duì)這些接口需要進(jìn)行身份的認(rèn)證,那么這就需要用戶提供一些信息,比如用戶名密碼等,但是為了安全起見讓用戶暴露的明文密碼次數(shù)越少越好,我們一般在web項(xiàng)目中,大多數(shù)采用保存的session中,然后在存一份到cookie中,來保持用戶的回話有效性。但是在app提供的開放接口中,后端服務(wù)器在用戶登錄后如何去驗(yàn)證和維護(hù)用戶的登陸有效性呢,以下是參考項(xiàng)目中設(shè)計(jì)的解決方案,其原理和大多數(shù)開放接口安全驗(yàn)證一樣,如淘寶的開放接口token驗(yàn)證,微信開發(fā)平臺(tái)token驗(yàn)證都是同理。

簽名設(shè)計(jì)

對(duì)于敏感的api接口,需使用https協(xié)議

https是在http超文本傳輸協(xié)議加入SSL層,它在網(wǎng)絡(luò)間通信是加密的,所以需要加密證書。

https協(xié)議需要ca證書,一般需要交費(fèi)。

簽名的設(shè)計(jì)

原理:用戶登錄后向服務(wù)器提供用戶認(rèn)證信息(如賬戶和密碼),服務(wù)器認(rèn)證完后給客戶端返回一個(gè)Token令牌,用戶再次獲取信息時(shí),帶上此令牌,如果令牌正取,則返回?cái)?shù)據(jù)。對(duì)于獲取Token信息后,訪問用戶相關(guān)接口,客戶端請求的url需要帶上如下參數(shù):

時(shí)間戳:timestamp

Token令牌:token

然后將所有用戶請求的參數(shù)按照字母排序(包括timestamp,token),然后更具M(jìn)D5加密(可以加點(diǎn)鹽),全部大寫,生成sign簽名,這就是所說的url簽名算法。然后登陸后每次調(diào)用用戶信息時(shí),帶上sign,timestamp,token參數(shù)。

例如:原請求https://www.andy.cn/api/user/update/info.shtml?city=北京 (post和get都一樣,對(duì)所有參數(shù)排序加密)

加上時(shí)間戳和token

https://www.andy.cn/api/user/update/info.shtml?city=北京×tamp=12445323134&token=wefkfjdskfjewfjkjfdfnc 
然后更具url參數(shù)生成sign

最終的請求如

https://www.andy.cn/api/user/update/info.shtml?city=北京×tamp=12445323134&token=wefkfjdskfjewfjkjfdfnc&sign=FDK2434JKJFD334FDF2 
其最終的原理是減小明文的暴露次數(shù);保證數(shù)據(jù)安全的訪問。

具體實(shí)現(xiàn)如下:

1. api請求客戶端想服務(wù)器端一次發(fā)送用用戶認(rèn)證信息(用戶名和密碼),服務(wù)器端請求到改請求后,驗(yàn)證用戶信息是否正確。

如果正確:則返回一個(gè)唯一不重復(fù)的字符串(一般為UUID),然后在Redis(任意緩存服務(wù)器)中維護(hù)Token----Uid的用戶信息關(guān)系,以便其他api對(duì)token的校驗(yàn)。

如果錯(cuò)誤:則返回錯(cuò)誤碼。



2.服務(wù)器設(shè)計(jì)一個(gè)url請求攔截規(guī)則

(1)判斷是否包含timestamp,token,sign參數(shù),如果不含有返回錯(cuò)誤碼。

(2)判斷服務(wù)器接到請求的時(shí)間和參數(shù)中的時(shí)間戳是否相差很長一段時(shí)間(時(shí)間自定義如半個(gè)小時(shí)),如果超過則說明該 url已經(jīng)過期(如果url被盜,他改變了時(shí)間戳,但是會(huì)導(dǎo)致sign簽名不相等)。

(3)判斷token是否有效,根據(jù)請求過來的token,查詢r(jià)edis緩存中的uid,如果獲取不到這說明該token已過期。

(4)根據(jù)用戶請求的url參數(shù),服務(wù)器端按照同樣的規(guī)則生成sign簽名,對(duì)比簽名看是否相等,相等則放行。(自然url簽名 也無法100%保證其安全,也可以通過公鑰AES對(duì)數(shù)據(jù)和url加密,但這樣如果無法確保公鑰丟失,所以簽名只是很大程 度上保證安全)。

(5)此url攔截只需對(duì)獲取身份認(rèn)證的url放行(如登陸url),剩余所有的url都需攔截。

3.Token和Uid關(guān)系維護(hù)

對(duì)于用戶登錄我們需要?jiǎng)?chuàng)建token--uid的關(guān)系,用戶退出時(shí)需要需刪除token--uid的關(guān)系。

簽名實(shí)現(xiàn)

獲取全部請求參數(shù)




生成簽名

public static String createSign(Map<String, String> params, boolean encode)            throws UnsupportedEncodingException {        Set<String> keysSet = params.keySet();        Object[] keys = keysSet.toArray();        Arrays.sort(keys);        StringBuffer temp = new StringBuffer();        boolean first = true;        for (Object key : keys) {            if (first) {                first = false;            } else {                temp.append("&");            }            temp.append(key).append("=");            Object value = params.get(key);            String valueString = "";            if (null != value) {                valueString = String.valueOf(value);            }            if (encode) {                temp.append(URLEncoder.encode(valueString, "UTF-8"));            } else {                temp.append(valueString);            }        }        return MD5Utils.getMD5(temp.toString()).toUpperCase();    }

 

From: http://www.lai18.com/content/944366.html

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
淘寶開放平臺(tái)
微博API
易如意網(wǎng)絡(luò)驗(yàn)證系統(tǒng)1.1【開源】
21、OAuth授權(quán)的步驟
kettle實(shí)現(xiàn)從api接口全量抽取數(shù)據(jù)到數(shù)據(jù)庫中
微信公眾平臺(tái)卡券API接口開發(fā)指南
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服