什么是cookie
cookie是一段文本,格式key-value
cookie鉴权原理
1.当客户端第一次访问服务器端时,服务器会成cookie信息,并且在响应头的set-cookie
里面把生成的cookie信息发送给客户端
2.当客户端第2-N次访问服务端的时候,那么客户端就会在请求头的cookie带上cookie信息,从而实现鉴权
cookie的分类
会话cookie::保存在内存,当浏览器关闭之后就会自动化清除cookie
持久cookie:保存在硬盘,浏览器关闭后不会清除,只有当失效时间到了才会之清除
cookie和set-cookie的关系
请求头中的cookie和响应头的set-cookie的关系
前端若想访问后端的接口,需要后端接收到正确的ctoken值,而ctoken前端可以通过cookie获取ctoken字段
浏览器发送请求,服务器返回响应报文给浏览器,响应的Response Header中的Set-Cookie就是告诉浏览器为当前页面设置cookie,浏览器将会在当前页面所在域名设置cookie字符串。
当浏览器再次发送请求时,浏览器默认会自动将cookie中的字符串放在请求头中的Cookie项中发送给Web服务器。
set-cookie的属性
Set-Cookie: JSESSIONID=7A6D610CBD77353FAEAFF169AC7B1D16; Path=/; HttpOnly
Set-Cookie: ctoken=O5kWnZU24hNA4eJq; Domain=.mayibank.net; Path=/
属性Domain值,为当前客户端网址mayibank.net设置cookie的属性ctoken值
Set-Cookie中的属性Domain限定给mayibank.net
域下设置ctoken,然后现在页面所在域却是natapp.cc,所以matiank.net
有ctoken,此网络natapp.cc
没有ctoken值,这就造成通过前端使用document.cookie
方法获取不到ctoken值。
set -cookie与cookie的区别
- set-cookie是一个函数,由服务器向浏览器发出响应
- cookie是服务器发送给浏览器的变量
- 浏览器向服务器发送请求(put,get,post,delect方法),服务器会使用
set-cookie()方法
向本地的浏览器
发送cookie,存在于电脑的一个txt文件下
网络请求中的cookie与set-Cookie的交互模式和作用:
1、当很多人访问统一网络服务器,服务器如何区分不同的用户
sessionid,sessionid保证了浏览器和服务器唯一性的通信凭证号码,session保存在服务器上,sessionid保存在浏览器等客户端,服务器根据浏览器发送来的sessionid作为一个唯一的key值找到对应的用户。
所以说sessionid的唯一性用来区别和查询用户信息,因此sessionid的作用不言而喻。
2、我们经常说浏览器关闭后session就会被清除,那session有生命周期么?
有的,这个是服务器的配置,浏览器关闭只是把sessionid给清除了,所以在此打开浏览器并请求服务,你的登录状态无法找到,由此你需要重新登录。
一般情况下,浏览器如果不刷新或者不重新请求的话,服务器一般会缓存session数据20分钟左右。
3、cookie会被缓存,sessionid保存在cookie中,sessionid一定会被清除么?
不一定,这个需要服务器cookie的设置了,但总体而言,因安全性考量,最好不要缓存sessionid
4、cookie保存用户状态时需要保存sessionid么?
不需要,保存user_id或者其他token即可
5、cookie是如何发送到服务器的?
使用http请求头,浏览器进行了封装,但在一般网络编程时可以加上
6.cookie存放一些小而不敏感的数据,并且数据类型只能是字符串(json);session可以存放任意数据,java中session中可以存放任意对象
7.session必须依赖cookie实现
cookie值防范
操作:执行第三方的xss平台攻击登陆页面,若用户登录,即将用户的cookie值返回给攻击者
注意
- 攻击者可以通过xss技术获取你的cookie值
- cookie值,不能存放账号密码
- 不能凭cookie值存在,就断定账号登陆
防止xss的攻击
- 网站做些脚本拦截,并且若web网站使用富文本编辑器,针对用户输入引用脚本设置安全检验拦截
- 不能凭cookie值存在,就断定账号登陆,得设置更多检验,引入ip,cookie值加密ID和ip
查看cookie是否是httponly
可防止xss攻击
按F12,查看Application选项,子选项cookie