为什么csrf.html页面可以获得comment页面的userid?

来源:4-1 CSRF攻击简介和演示

iris侵袭

2017-08-17

4-2 演示的时候,为什么csrf页面可以拿到用户的登录态?用户登录后,再打开csrf页面刷新一下,csrf页面是如何拿到userid的?不同页面可以共享cookie么?

写回答

1回答

TooooBug

2017-08-17

你是指的4分26秒左右,在http请求中看到的userId=1吗?

这里其实要看怎么理解“获得”或者“拿到”这个概念。一般来说,我们说能获得userId,是指可以通过编程的方式取到userId的值。比如csrf页面可以获得userId,是指csrf页面中可以通过js取到userId的值。

在这个例子中,csrf的页面其实是无法获得userId的值的,也就是没有办法通过js读取到userId这个值。要不然就违反了cookie的同源策略。

这个视频中演示的请求是从csrf页面发起的,但是是浏览器直接请求新闻评论接口的,因为请求的是新闻网站,所以会带上新闻网站的cookie,所以这个请求是会带上userId=1的cookie的。但是,在这个请求的全过程中,csrf页面是无法接触到cookie或者userId的值的。

这正是csrf攻击最精妙的地方,它利用的是“用户自己访问网站带上的cookie”,这个过程是合法的,它非法的地方在于,用户是在自己不知道的情况下访问网站的,也就是用户不知情。

0
3
TooooBug
回复
iris侵袭
你的表述中有一个地方理解错了,不是csrf的页面访问的评论接口,是用户(浏览器)访问的。用户访问一个网站的接口,当然要带上cookie了(除非用我们后面说的方案强制要求不允许带)。
2017-08-24
共3条回复

腾讯大牛亲授 Web前后端漏洞分析与防御技巧

提高每一行代码安全系数,突破前后端开发Web安全弱项

1186 学习 · 112 问题

查看课程