Web术语
Cookie
Cookie是一种浏览器的缓存机制,在不同的域名下存储了不同的cookie,当发送请求的时候会将该域名下的cookie存储的信息一起发送到服务器之之中。下面是一张浏览器存储Cookie的截图:
Cookie存储的一些元数据信息可以参考下表:
字段名 | 是否必须 | 示例值 | 说明 |
---|---|---|---|
Name=Value | ✅ 是 | login_user=Tomatos | Cookie 的键值对内容,必须有,值是字符串 |
Path | ❌ 否 | / | 表示此 Cookie 对哪个路径有效,默认为当前路径 |
Domain | ❌ 否 | .example.com | 指定可以接收此 Cookie 的域名,默认是当前域 |
Expires | ❌ 否 | Wed, 01 May 2025 12:00:00 GMT | 设置 Cookie 的过期时间(绝对时间) |
Max-Age | ❌ 否 | 86400 (单位:秒) | 设置 Cookie 的有效期(相对时间),优先于 Expires |
Secure | ❌ 否 | 无值(只要写上即可) | 表示此 Cookie 只会在 HTTPS 请求中发送 |
HttpOnly | ❌ 否 | 无值 | 表示此 Cookie 无法被 JavaScript 访问(如 document.cookie ) |
SameSite | ❌ 否 | Strict / Lax / None | 控制跨站请求时是否携带 Cookie,用于防范 CSRF |
**注:**Cookie存储在浏览器(客户端)之中
Session
Session 指的是维持客户端与服务端会话的一种机制。
常见的Session实现如下:
客户端浏览器发起登陆请求
登陆成功后,服务端会把用户信息保存在服务端,并返回一个唯一的 session 标识(标识并不唯一具体由服务器决定)给客户端浏览器。
客户端浏览器会把这个唯一的 session 标识保存在起来
再次访问 web 应用时,客户端浏览器会把这个唯一的 session 标识带上,这样服务端就能根据这个唯一session标识找到对应用户
**注:**Session可以通过 Cookie 实现,也可以通过别的手段实现
CSRF
跨站请求伪造(Cross-Site Request Forgery)
一个经典的CSRF例子如下:
用户A登录了银行相关网站,关闭了网站但是并没有退出用户
用户A访问了另一个钓鱼网站,其中有一个按钮伪装了一个段表单,表单指向你之前访问的银行相关网站
点击按钮后会携带你刚刚保存了cookie,拿到cookie后可以通过里面存储的session唯一标识成功访问你之前登录的银行相关网站进行敏感的高危操作。