stupid_fishman 2023-07-11 15:53 采纳率: 25%
浏览 13
已结题

服务器是怎么判断客户端传来的cookie是正确的,服务端的cookie是一直存储在内存中的吗,那cookie对应的是哪一个进程或线程?

服务器是怎么判断客户端传来的cookie是正确的,服务端的cookie是一直存储在内存中的吗,那cookie对应的是哪一个进程或线程?

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-11 21:41
    关注
    • 你可以看下这个问题的回答https://ask.csdn.net/questions/7707109
    • 这篇博客也不错, 你可以看下什么是cookie以及cookie的特性、优缺点
    • 除此之外, 这篇博客: cookie机制及cookie的应用中的 操作cookie的工具类 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • public class CookieUtil(){
      
      	/**
      	 * 根据名字获取cookie的值  默认使用“utf-8”编码
      	 * @param request
      	 * @param name cookie名字
      	 * @return
      	 */
      	public static String getCookieValueByName(HttpServletRequest request,String name){
      		Cookie cookie = getCookieByName(request,name);
      		if(cookie!=null&&StringUtil.isNotBlank(cookie.getValue())){
      			return URLDecoder.decode(cookie.getValue(),"UTF-8″);
      		}else if(cookie.getValue()!=null){
      			return "";
      		}else{ 
      			return null;
      		}   
      	}
      
      	/**
      	 * 根据名字修改cookie  
      	 * @param request
      	 * @param name cookie名字
      	 * @param value cookie值
      	 * @param expire cookie新的过期时间--为0则表示删除
      	 * @param created cookie不存在是否新建
      	 * @return
      	 */
      	public static Cookie modCookieByName(HttpServletRequest request,String name,String value, Integer expire,boolean created){
      		Cookie cookie=getCookieByName();
      		if(null!=cookie){
      			cookie.setMaxAge(expire);
      			cookie.setValue(URLEncoder.encode(value.trim(),"UTF-8″));
      		}else(null==cookie){
      			if(created){
      				Cookie cookie=createCookie(name,value,expire);
      			}
      		}
      		return cookie;
      	}
      
      	/**
      	 * 新建cookie  默认path为“/”,默认所有值进行UTF-8编码
      	 * @param request
      	 * @param name cookie名字
      	 * @param value cookie值
      	 * @param expire cookie过期时间--为0则表示删除
      	 * @return
      	 */
      	public static Cookie createCookie(String name,String value,Integer expire){
      		
      		Cookie cookie = new Cookie(name.trim(), URLEncoder.encode(value.trim(),”UTF-8″));
      		cookie.setMaxAge(expire);
      		cookie.setPath("/");
      		return cookie;
      	}
      
      	/**
      	 * 根据名字获取cookie
      	 * @param request
      	 * @param name cookie名字
      	 * @return
      	 */
      	public static Cookie getCookieByName(HttpServletRequest request,String name){
      		Map<String,Cookie> cookieMap = ReadCookieMap(request);
      		if(cookieMap.containsKey(name)){
      			Cookie cookie = (Cookie)cookieMap.get(name.trim();
      			return cookie;
      		}else{
      			return null;
      		}   
      	} 
      	 
      	/**
      	 * 将cookie封装到Map里面
      	 * @param request
      	 * @return
      	 */
      	private static Map<String,Cookie> ReadCookieMap(HttpServletRequest request){  
      		Map<String,Cookie> cookieMap = new HashMap<String,Cookie>();
      		Cookie[] cookies = request.getCookies();
      		if(null!=cookies){
      			for(Cookie cookie : cookies){
      				cookieMap.put(cookie.getName(), cookie);
      			}
      		}
      		return cookieMap;
      	}
      }

    • 您还可以看一下 刘海龙老师的渗透测试视频教程课程中的 COOKIE注入小节, 巩固相关知识点
    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月22日
  • 专家已采纳回答 7月14日
  • 创建了问题 7月11日