我的WEB安全之路

Web黑客技术揭秘-读书笔记

第四章        前端黑客之CSRF


一、概述

        CSRF,全称是 Cross Site Request Forgery,即跨站请求伪造。

        对于CSRF来说,有两个关键点:跨站点的请求与请求时伪造的。

1.跨站点的请求

        从字面上看,跨站点请求的来源时是其他站点,比如,目标网站的删除文章功能接受到来自恶意网站客户端(Javascript、Flash、HTML等)发出的删除文章请求,这个请求就是跨站点的请求,目标网站应该区分请求来源。      

        字面上的定义总是狭义的,这样恶意的请求也是有可能来自本站。

2.请求是伪造的

        伪造的定义很模糊,一般情况下,我们可以认为:如果请求的发出不是用户的意愿,那么这个请求就是伪造的。

3.一个场景

        参考:P85-P88

        总的来说,这个“大多数场景”:存在一个目标网站A:www.a.com,恶意网站B:www.b.com

        两个域不一样,目标网站A上有一个删除文章的功能,通常是用户单击“删除链接”时才会删除指定文章,这个链接是www.a.com/blog/del?id=1,id号代表不同的文章

        1.GET请求方式:

        如果目标网站A上存在一个XSS漏洞,执行的JS脚本无同源策略限制,就可以按下面的方式来删除文章。

  •         使用AJAX发出GET请求,请求值是id=1,请求目标地址是www.a.com/blog/del。
  •         动态创建一个标签对象(img、iframe、script)等,将他们的src指向这个链接
  •         然后欺骗用户访问存在XSS脚本的漏洞页面(在目标网站A上),则攻击发生

        攻击过程有三个关键点:跨域发出了一个GET/POST请求、可以无JavaScript参与、请求时身份认证后的。

         如果不存在XSS漏洞或者不使用这种方式,要如何做?:

  • 在恶意网站B上编写一个CSRF页面www.b.com/csrf.htm,想想有什么其他办法可以发出一个GET请求到目标网站
  • 利用AJAX跨域时带上目标域的会话
  • 更简单的:用代码<img src=http://www.a.com/blog/del?id=1/>。
  • 然后欺骗已经登陆目标网站A的用户访问www.b.com/csrf.htm页面,则发生攻击。

总得来说:

  • 跨域发出了一个GET请求、
  • 可以无Javascript参与
  • 请求是身份认证后的:浏览器允许网站(恶意网站B)跨域请求目标网站A的资源时带上目标网站A的用户本地Cookie。

        2.POST请求方式

        通过JavaScript自动生成一份表单

二、CSRF类型

        1.HTML CSRF攻击

                HTML中能够设置src/href等链接地址的标签都可以发起一个GET请求

        2.JSON HiJacking攻击

                网站发出的AJAX请求,响应回来的数据是JSON格式,它有以下两种格式。

                1)字典格式

                2)列表格式

                饭否的JSON HiJacking案例

                这一章节看的十分不明白,

        3.Flash CSRF攻击


总结:CSRF的基本概念和分类

内容来源自钟晨鸣,徐少培《前端黑客技术揭秘》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值