Cookie防伪造防修改
主要防止非法用戶修改cookie信息,以及cookie的超時(shí)時(shí)間
傳統(tǒng)cookie存儲(chǔ),Cookie(name, value),value很容易就被篡改。
防修改cookie存儲(chǔ),Cookie(name, value+“&&”+ signToken+“&&”+saveTime+“&&”+maxTime)
signToken :簽名密鑰 由md5(value+saveTime+maxTime+”自定義密鑰“)生成
saveTime:cookie創(chuàng)建時(shí)間
maxTime:cookie超時(shí)時(shí)間
設(shè)置Cookie
public static void put(HttpServletResponse response, String key, String value, int maxTime) {
String pwdKey = "white_yu"; //自定義密鑰
String saveTime = System.currentTimeMillis() + "";
String signToken = md5(pwdKey, saveTime, maxTime + "", value);
String cookieValue = signToken + "&&" + saveTime + "&&" + maxTime+ "&&" + value;
Cookie cookie = new Cookie(key,cookieValue);
cookie.setMaxAge(maxTime);
response.addCookie(cookie);
}
獲取Cookie
public static String getCookie(String cookieValue) {
String pwdKey = "white_yu"; //自定義密鑰
if (StringUtils.isNotBlank(cookieValue)) {
String cookieStrings[] = cookieValue.split("&&");
if (null != cookieStrings && 4 == cookieStrings.length) {
String signToken = cookieStrings[0];
String saveTime = cookieStrings[1];
String maxTime = cookieStrings[2];
String value = cookieStrings[3];
String sign = md5(pwdKey, saveTime, maxTime, value);
// 保證 cookie 不被人為修改
if (sign.equals(signToken)) {
long stime = Long.parseLong(saveTime);
long maxtime = Long.parseLong(maxTime) * 1000;
// 查看是否過時(shí)
if ((stime + maxtime) - System.currentTimeMillis() > 0) {
return value;
}
}
}
}
return null;
}
轉(zhuǎn)載于:https://www.cnblogs.com/zhang0807/p/10275372.html
總結(jié)
以上是生活随笔為你收集整理的Cookie防伪造防修改的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iTerm2 使用笔记
- 下一篇: AD 批量修改漫游文件