目前大多數(shù)網(wǎng)站和 app 的接口都是采用 http 協(xié)議艾凯,但是 http 協(xié)議很容易就可以通過抓包工具監(jiān)聽到內(nèi)容陈肛,甚至篡改內(nèi)容闻书,為了保證數(shù)據(jù)不被別人看到和修改唆鸡,可以通過以下幾個(gè)方面避免:
加密。
比如用戶名和密碼枣察,我們需要加密争占,這樣即使被抓包監(jiān)聽,他們也不知道原始數(shù)據(jù)是什么序目。
簡(jiǎn)單的 md5 是可以暴力破解的臂痕,所以加密方式越復(fù)雜就越安全,可以根據(jù)需要自由組合猿涨。
常見的是 md5(不可逆)握童、aes(可逆)、加鹽叛赚,
例如:username = aes(username)澡绩,pwd =md5(pwd + username)簽名
簽名的目的是為了防止篡改,比如http://www.xxx.com/getnews?id=1俺附,獲取 id=1的內(nèi)容肥卡,如果不簽名通過 id=2,就可以獲取 id=2的內(nèi)容事镣。
怎么簽名步鉴?
通常使用 sign ,比如原鏈接請(qǐng)求的時(shí)候加一個(gè) sign 參數(shù)璃哟,sign=md5(id=1)氛琢,服務(wù)器接收到請(qǐng)求,驗(yàn)證 sign 是否等于 md5(id=1)随闪,如果等于說明正常請(qǐng)求阳似。
不過,這有一個(gè)弊端蕴掏,加入規(guī)則被發(fā)現(xiàn)障般,那么就會(huì)被偽造调鲸,所以適當(dāng)復(fù)雜一點(diǎn),還是可以提高安全性的挽荡。
- 登錄態(tài)
http 是無狀態(tài)的藐石,也就是服務(wù)器無法自己判斷兩個(gè)請(qǐng)求是否有聯(lián)系,那么登錄之后定拟,以后的接口怎么判斷是否登錄呢于微?
簡(jiǎn)單的做法,在數(shù)據(jù)庫(kù)中存一個(gè) Token字段青自,當(dāng)用戶調(diào)用登錄接口成功的時(shí)候株依,就給該字段設(shè)一個(gè)值(比如 aes(過期時(shí)間)),同時(shí)返回給前端延窜,以后前端每次請(qǐng)求帶上該值恋腕,服務(wù)器首先校驗(yàn)是否過期,再校驗(yàn)是否正確逆瑞,如果校驗(yàn)失敗就讓其登錄荠藤。