2.設定***,***主要定義五個功能
作用一:設定字元編碼(所用請求均為post請求)
作用四:根據時間戳判斷介面失效時間,在後台定義乙個失效時間,客戶端請求時帶有時間戳
作用五:包含"user"字串的url需要驗證使用者的登入狀態,並重置redis使用者:account_token狀態
作用六:驗證客戶端版本提示客戶端公升級
3.使用者登入功能:在使用者登入成功後,用uuid隨機生成乙個字串,userid,account_token相互對應設定時長,存入到redis中,並返回給客戶端使用者登入狀態都要根據這account_token進行判斷
//驗證簽名
if (!urlapisgin.equals(sgin))
//驗證介面時效
if ("".equals(timestamp) || timestamp == null)
long nowtime = system.currenttimemillis();
long apitime = new long(timestamp) + timeout * 60 * 1000;
if (nowtime > apitime)
//驗證版本
string reqversioncode = request.getheader(resourceutil.version);
object version = redis.get(resourceutil.version); //value:
if(version != null)}}
//使用者登入狀態
}生成簽名**:
public class resourceutil
string sgin = null;
enumerationparameternames = request.getparameternames();
mapvalues = new hashtable();
while (parameternames.hasmoreelements())
} if (values.size() > 0)
});string sginstr = secret;
for (entryentry : list)
sginstr += resourceutil.version + request.getheader(resourceutil.version).tostring();
sgin = md5util.md5(sginstr).touppercase();
} return sgin;
}}
登入功能**:
if (login != null)
string account_token = uuidutils.getencryuuid();
tokenmodel model = new tokenmodel(user_id, account_token,
resourceutil.expires_in);
redis.set(account_token, getcontext(model),
resourceutil.expires_in);
redis.set(user_id,
account_token, resourceutil.expires_in);
result.setmodel(model);
result.getresult().put("account", login.get("account").tostring());
result.commit();
} else
}
***配置:
@configuration
public class webinitconfig extends webmvcconfigureradapter ")
private string secret;
@value("$")
private string sginparam;
@value("$")
private int timeout;
@autowired
@qualifier("systemredis")
private redistemplateredissystemtemplate;
@override
public void addinterceptors(interceptorregistry registry)
}
介面安全性解析
針對 非開放性平台 公司內部產品 介面特點彙總 1 因為是非開放性的,所以所有的介面都是封閉的,只對公司內部的產品有效 2 因為是非開放性的,所以oauth那套協議是行不通的,因為沒有中間使用者的授權過程 3 有點介面需要使用者登入才能訪問 4 有點介面不需要使用者登入就可訪問 針對以上特點,移動端...
java 如何保證介面的安全性
根據使用者名稱或者使用者id,結合使用者的ip或者裝置號,生成乙個token。在請求後台,後台獲取http的head中的token,校驗是否合法 和資料庫或者redis中記錄的是否一致,在登入或者初始化的時候,存入資料庫 redis 在使用base64方式的編碼後,token字串還是有20多位,有的...
安全性測試 以使用者登入為例
以使用者登入為例,安全測試需要注意哪些方面 密碼問題 驗證儲存在後台的使用者密碼是否加密。驗證使用者密碼在網路中傳輸是否加密。驗證使用者面是否具有時效性,到期後是否提示使用者更改密碼。驗證密碼輸入框是否支援複製和貼上 驗證使用者密碼 使用者登入 沒有登陸的前提之下,在瀏覽器的位址列中直接輸入登入後的...