Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cookie 和 token 都存放在 header 中,为什么不会劫持 token? #17

Open
lovelmh13 opened this issue Feb 1, 2020 · 0 comments

Comments

@lovelmh13
Copy link
Owner

lovelmh13 commented Feb 1, 2020

原题

cookie

cookie可以存一些用户信息。因为 HTTP 是无状态的,它不知道你有没有登陆过。故可以通过cookie里的信息解决无状态的问题。

而浏览器,会自动带上请求同域的cookie。(AJAX 不会自动携带cookie)

token

后端把用户信息和其他内容放进去,通过 jwt 生成 token,返回给前端。
浏览器是不会自动携带 token。

CSRF 跨站点请求伪造

通过浏览器会自动携带同一站点cookie的特点。cookie的传递流程是用户在访问站点时,服务器端生成cookie,发送给浏览器端储存,当下次再访问时浏览器会将该网站的cookie发回给服务器端

  • 如果用户登陆了A网站,拿到了cookie,又点击了恶意的网站B。
  • B收到请求以后,返回一段攻击代码,并且发出一个请求给网站A。
  • 浏览器会在用户不知情的情况下,根据B的请求,带着cookie访问A。

由于HTTP是无状态的,A网站不知道这个请求其实是恶意网站B发出的,就会根据cookie来处理请求,从而执行了攻击代码。

而浏览器不会自动携带 token,所以不会劫持 token。

XSS

跨站脚本工攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或者JavaScript进行的一种攻击。

就是说,cookie和token都可能被拿到,所以都废了。

same-site 同一站点

看:冴羽大佬的 浏览器系列之 Cookie 和 SameSite 属性

参考

关于浏览器cookie的那些事儿
CSRF攻击与防御
Cookie的设置、读取以及是否自动携带问题
《图解HTTP》

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant