CSRF原理

CSRF原理

  CSRF(Cross Site Request Forgery),也就是跨站域请求伪造,利用服务端对用户游览器的信任,攻击者在自己网站或受自己控制的网站中构造恶意请求(恶意请求是正常网站的某些功能),然后诱骗用户访问自己的网站触发构造的恶意请求,如果用户的cookie没有失效,正常网站没有对用户的请求做验证的话,那么该请求就会成功,造成CSRF。
  可以这么理解CSRF,攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、修改密码、盗取你的账号、修改资料信息、添加系统管理员,甚至于购买商品、虚拟货币转账等,一句话只要你能干的他几乎都能干。

CSRF利用过程

在这里插入图片描述
  从图中可以看出,网站通过cookie里面的数据来识别用户,当用户成功进行身份验证之后服务端会给浏览器一个身份标识cookie,只要不关闭浏览器或者退出登录,用户访问A网站会一直带上这个cookie。在这个期间如果用户去访问了黑客的网站,用户游览器就会加载执行黑客网站的HTML,JS,CSS等数据。加载执行的这个过程用户游览器是被黑客控制的状态,黑客网站JS构造了请求网站A的数据包,这叫请求伪造,请求包是从黑客网站中触发的,所以Referer是黑客的网址,存在跨站。
CSRF须知:
使用csrf攻击,黑客不会拿cookie,只会利用用户的合法cookie骗取服务器的信任。
CSRF与XSS区别:
xss:跨站脚本攻击、诱骗用户点击恶意链接盗取用户cookie进行攻击、不需要用户进行登录、xss除了利用cookie还可以篡改网页等。
csrf:跨站请求伪造、无法获取用户的cookie而是直接冒充用户、需要用户登录后进行操作。

CSRF利用条件:

从上个案例中可以看出来触发CSRF攻击需要几个条件:
1.攻击时用户cookie没有失效
2.诱骗用户访问攻击者网站
3.攻击者必须了解网站请求的参数构造
4.构造的恶意请求没有对请求进行验证(如修改密码要求重新输入密码)

CSRF类型

GET:以GET方式构造恶意请求的
POST :以POST 方式构造恶意请求的

CSRF防御

1.验证 HTTP Referer 字段
  在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站,比如需要访问 http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory,用户必须先登陆 bank.example,然后通过点击页面上的按钮来触发转账事件。这时,该转帐请求的 Referer 值就会是转账按钮所在的页面的 URL,通常是以 bank.example 域名开头的地址。而如果黑客要对银行网站实施 CSRF 攻击,他只能在他自己的网站构造请求,当用户通过黑客的网站发送请求到银行时,该请求的 Referer 是指向黑客自己的网站。因此,要防御 CSRF 攻击,银行网站只需要对于每一个转账请求验证其 Referer 值,如果是以 bank.example 开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果 Referer 是其他网站的话,则有可能是黑客的 CSRF 攻击,拒绝该请求。
此方法可被绕过
2.在请求地址中添加 token 并验证
  CSRF能够成功完全是因为黑客能够伪造用户的请求,在该请求中所有的用户验证信息都存在于cookie中,因此黑客才可以利用cookie来通过安全验证。要抵御CSRF,关键在于在请求中放入黑客不能伪造的信息,并且该信息不存在在cookie中。那么我们就可以在HTTP请求中以参数的形式加入一个随机生成的token,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或token的内容的不正确,则认为不安全从而直接拒绝该请求。(一般是服务器端生成的),token值需要很强的随机性。
3.在 HTTP 头中自定义属性并验证
  这里也是使用token并进行验证,和上一种方法不同的是,这里并不是把token以参数的形式置于HTTP请求中去,而是把它放到HTTP投中自定义的属性里。

CSRF防御实战参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值