请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

正在回答

1回答

你是指的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 回复 有任何疑惑可以回复我~
  • 提问者 iris侵袭 #1
    谢谢老师回复这么多,我的理解是:第一次用户登录页面后,后台会set('userId', user.id), 下次请求的话,request才会带上cookie字段里才有userId=1吧。正如你说的,那这个cookie也应该属于新闻网站的页面。那么在第一次打开那个csrf页面的时候,它是要访问新闻评论接口,但是它的request里的cookie字段是怎么会显示userid的?不知道我哪里理解错了
    回复 有任何疑惑可以回复我~ 2017-08-17 20:35:36
  • 提问者 iris侵袭 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2017-08-20 09:15:53
  • TooooBug 回复 提问者 iris侵袭 #3
    你的表述中有一个地方理解错了,不是csrf的页面访问的评论接口,是用户(浏览器)访问的。用户访问一个网站的接口,当然要带上cookie了(除非用我们后面说的方案强制要求不允许带)。
    回复 有任何疑惑可以回复我~ 2017-08-24 20:32:22
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信