APP開發(fā)安全解決方案
HTTP方法的使用APP和服務(wù)器的交互通常使用HTTP協(xié)議,常用的方法是GET和POST。GET方法的參數(shù)暴露在發(fā)送給服務(wù)器的URL里,且通常服務(wù)器端對URL的長度有限制;POST方法的參數(shù)在HTTP請求的BODY體里,比GET方法安全且數(shù)據(jù)長度沒有限制。深圳APP開發(fā)公司認(rèn)為從安全角度考慮,只要是帶參數(shù)的請求,
都應(yīng)該使用POST方法。APP向服務(wù)器發(fā)送的URL請求通常是如下格式。http://+域名+/+模塊名+/+方法名例如,http://www.test.com/customer/login中包含的方法名為login,對應(yīng)的JSON數(shù)據(jù)如下所示。
{
"version":1.0,"
params":{
"username":"aaa","
password":"123456"
}
}
params中包含此方法自身需要的參數(shù)。還有一種方案是把方法名也作為參數(shù),傳給服務(wù)器,對應(yīng)的URL如下所示。
http://www.test.com/customer(此網(wǎng)址僅舉例用,并非一個可以真正訪問的網(wǎng)址。)對應(yīng)的JSON數(shù)據(jù)如下所示。
{
"method":"login","
version":1.0,"
params":{
"username":"aaa","
password":"
123456"
}
}
APP開發(fā)怎樣使用時間戳參數(shù)
如果黑客截獲了APP向服務(wù)器發(fā)送的請求,就可以向服務(wù)器反復(fù)發(fā)送某個請求,對服務(wù)器實施攻擊,導(dǎo)致服務(wù)器癱瘓。解決的方法是在APP向服務(wù)器發(fā)送的請求參數(shù)中增加時間戳參數(shù),如服務(wù)器發(fā)現(xiàn)這個時間戳與服務(wù)器當(dāng)前時間的間隔比較久,可判定此請求失效,不予處理,避免被惡意攻擊。例如,APP從服務(wù)器獲取商品列表時,發(fā)送如下數(shù)據(jù)。
{
"version":1.0,"
timeStamp":1425065977,
"authCode":"607a0aa16db850d06682d7711588ae46",
"params":
{
"categoryId":1,
"offset":0,
"limit":10
}
}
timeStamp是APP發(fā)起此次請求的服務(wù)器當(dāng)前時間,authCode是根據(jù)timeStamp的數(shù)值按MD5算法或其他算法生成的驗證碼。timeStamp和authCode是一一對應(yīng)的關(guān)系,如果timeStamp的值變了,則authCode的值也隨之變動。服務(wù)器收到APP發(fā)的請求后,首先比較timeStamp的數(shù)值與服務(wù)器收到該請求的時間,若兩者相差比較大(如相隔了60秒),則可能是黑客發(fā)起的非正常請求,服務(wù)器對此請求不予處理;如兩者相差在允許范圍內(nèi),則驗證用timeStamp的數(shù)值按APP同樣的算法生成的字符串內(nèi)容是否和APP發(fā)送的authCode內(nèi)容一致。使用此方法,需要APP和服務(wù)器的時間保持同步。APP在啟動時,通過接口獲取到服務(wù)器的時間并與APP的時間比較,如果不一致,APP在計算timeStamp的數(shù)值時,需要把兩者的差值也計算在內(nèi)。好了,APP開發(fā)公司本文關(guān)于“APP開發(fā)HTTP安全解決方案”的知識就分享到這里,謝謝關(guān)注,博納網(wǎng)絡(luò)編輯整理。