-
Notifications
You must be signed in to change notification settings - Fork 3.3k
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
第 28 题:cookie 和 token 都存放在 header 中,为什么不会劫持 token? #31
Comments
原问题是 #32 (在本问题的语境下,token 默认存储在js自定义http head上)
来说明token比cookie安全并不成立。 但是问题二是成立的,对比token,cookie不安全的地方在于会被浏览器自动带上,所以crsf攻击才管用。 所以问题并不成立,在xss攻击面前,token 和 cookie 都凉了。 |
1、首先token不是防止XSS的,而是为了防止CSRF的; --该题终结-- |
我可以把token放在body中啊. |
上面的两种攻击方式,如果被xss攻击了,不管是token还是cookie,都能被拿到,所以对于xss攻击来说,cookie和token没有什么区别。但是对于csrf来说就有区别了。 以上面的csrf攻击为例:
这是个人理解的为什么只劫持cookie不劫持token的原因。 |
题目可能有点问题,在劫持面前,不管cookie还有token,都能劫持。只是说: cookie会自动携带上,而token需要设置header才可。 具体说一下xss层面的劫持和csxf层面的劫持: xss: 劫持cookie或者localStorage,从而伪造用户身份相关信息。前端层面token会存在哪儿?不外乎cookie localStorage sessionStorage,这些东西都是通过js代码获取到的。解决方案:过滤标签<>,不信任用户输入, 对用户身份等cookie层面的信息进行http-only处理。 csxf:是后端过于乐观的将header区的cookie取到(所以这才是主要原因,不是因为会自动携带cookie所以不安全,是后端代码不安全而已),并当作用户信息进行相关操作。解决方案也很简单,对于cookie不信任,对每次请求都进行身份验证,比如token的处理。 所以说,不管cookie token都能劫持,对开发者而言,做好这两种攻击即可。 |
1、token防止为了防止CSRF,防止频繁请求一种手段,验证码当然也可以; |
分享一篇文章,讲如何防止CSRF攻击。 |
服务端下发token,客户端需要存储本地,在需要token的请求中带上发给后端. |
“token:登陆后后端不返回一个token给客户端”,多了个“不”字? |
是csrf哦 |
XSS跨站脚本攻击 利用的是用户对指定网站的信任,CSRF跨站请求伪造 利用的是网站对用户浏览器的信任。当用户(被攻击者)登录网站时就会执行这些恶意代码,通过这些脚本可以读取cookie,session tokens。所以对于XSS而言,token也没用。 |
自我观点,不对请指出!!!谢谢~~ |
看了大家的回答,又去查了一下,写一下自己的理解,如果哪里不对,还请大家指正~ 谢谢~ cookiecookie可以存一些用户信息。因为 HTTP 是无状态的,它不知道你有没有登陆过。故可以通过cookie里的信息解决无状态的问题。 而浏览器,会自动带上请求同域的cookie。(AJAX 不会自动携带cookie) token后端把用户信息和其他内容放进去,通过 jwt 生成 token,返回给前端。 CSRF 跨站点请求伪造通过浏览器会自动携带同域cookie的特点。cookie的传递流程是用户在访问站点时,服务器端生成cookie,发送给浏览器端储存,当下次再访问时浏览器会将该网站的cookie发回给服务器端
由于HTTP是无状态的,A网站不知道这个请求其实是恶意网站B发出的,就会根据cookie来处理请求,从而执行了攻击代码。 而浏览器不会自动携带 token,所以不会劫持 token。 XSS
就是说,cookie和token都可能被拿到,所以都废了。 |
请求时token不会被自动带上,cookie会被自动带上;但是如果token存储在cookie里也会被劫持的啊。token只是身份认证是否合法,都放header里除非https防报文拦截,也只能做到传输的安全。 |
|
存在客户端的信息都是不安全。入侵者key轻松获取到token,在他的钓鱼网站也是很轻易的将偷来的token放在接口的header里的 |
是倒是这个理,不过你这个说的也太简陋了, |
这个 SameSite=strict 就可以对付了。 |
|
cookie
举例:服务员看你的身份证,给你一个编号,以后,进行任何操作,都出示编号后服务员去看查你是谁。
token
举例:直接给服务员看自己身份证
The text was updated successfully, but these errors were encountered: