关于cookies:cookie常见属性及用法
[导读]当设置为true时,示意创立的 Cookie 会被以平安的模式向服务器传输,也就是只能在 HTTPS 连贯中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连贯则不会传递该信息,所以不会被窃取到Cookie 的具体内容。 一、Cookie罕用属性一个Cookie蕴含以下信息:1)Cookie名称,Cookie名称必须应用只能用在URL中的字符,个别用字母及数字,不能蕴含特殊字符,如有特殊字符想要转码。如js操作cookie的时候能够应用escape()对名称转码。2)Cookie值,Cookie值同理Cookie的名称,能够进行转码和加密。3)Expires,过期日期,一个GMT格局的工夫,当过了这个日期之后,浏览器就会将这个Cookie删除掉,当不设置这个的时候,Cookie在浏览器敞开后隐没。4)Path,一个门路,在这个门路上面的页面才能够拜访该Cookie,个别设为“/”,以示意同一个站点的所有页面都能够拜访这个Cookie。5)Domain,子域,指定在该子域下才能够拜访Cookie,例如要让Cookie在a.test.com下能够拜访,但在b.test.com下不能拜访,则可将domain设置成a.test.com。6)Secure,安全性,指定Cookie是否只能通过https协定拜访,个别的Cookie应用HTTP协定既可拜访,如果设置了Secure(没有值),则只有当应用https协定连贯时cookie才能够被页面拜访。7)HttpOnly,如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无奈读取到Cookie信息。 留神:上图为在w3shool上为setcookie语法,并没有显示7 httponly哦,各自版本反对问题。 一、属性阐明:1 secure属性当设置为true时,示意创立的 Cookie 会被以平安的模式向服务器传输,也就是只能在 HTTPS 连贯中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连贯则不会传递该信息,所以不会被窃取到Cookie 的具体内容。2 HttpOnly属性如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无奈读取到Cookie信息,这样能无效的避免XSS攻打。 二、各种浏览器查看cookie办法示例:批改《web攻打之一:XSS跨站脚本》里的示例一里减少如下红色背景的代码如下: package com.dxz.web.controller;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class loginController { @RequestMapping(value="/login",method=RequestMethod.GET) public ModelAndView helloWorld(@RequestParam("nick") String nick, HttpServletResponse response){ System.out.println(nick + " login"); ModelAndView mv = new ModelAndView(); mv.addObject("message", nick); mv.setViewName("xss2"); Cookie hit=new Cookie("hitCounter","1"); hit.setHttpOnly(true);//如果设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法访问该Cookie hit.setMaxAge(60*60);//设置生存期为1小时 //hit.setDomain("www.duanxz.cn");//子域,在这个子域下才能够拜访该Cookie //hit.setPath("/hello");//在这个门路上面的页面才能够拜访该Cookie //hit.setSecure(true);//如果设置了Secure,则只有当应用https协定连贯时cookie才能够被页面拜访 response.addCookie(hit); return mv; }}再拜访 http://localhost:8080/SpringWebTraining/login?nick=%22%2F%3Cscript%3Ealert%28%22haha%22%29%3C%2Fscript%3E%3C%21- IE11: ...