CSRF

CSRF跨站请求伪造,跟xss攻击一样,存在巨大的危害

one click attack/session riding ///xsrf csrf

历史介绍: CSRF这种攻击方式在2000 年已经被国外的安全人员提出,但在国内,知道06年才开始被关注,

08年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞,如:纽约时报,等,现在互联网上的 许多站点仍对此毫无防备,以至于安全界称之为沉睡的巨人

 

原理:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是

是却完成了攻击者所期盼的一个操作,比如以你的名义发送邮件,发消息,盗取你的账号,添加系统管理员账号

,甚至购买商品,虚拟货币转账等,如:a网站存在CSRF漏洞,b攻击网站,c为合法用户

1.c----->a 输入用户密码

2.在用户信息通过验证之后,网站a产生cookie信息并返回给浏览器,此时用户登录a

可以正常发送请求到a.

3.用户未退出网站a之前,在同一浏览器中,打开一个网站ab页访问网站b

4.网站B接收到用户请求后,返回一些攻击类代码,并发出一个要求访问第三方站a

5.浏览器在接收到这些攻击代码后,根据网站B请求,在用户

列子。。。

CSRF攻击来源于web的隐藏身份验证机制!web的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但无法保证该请求是用户批准发送的。

CSRF防御:CSRF防御主要从服务端和客户端进行防御,防御效果要从服务端着手较好,现在一般都在服务端进行防御

1.cookie hashing(所有的表单都包含一个尾随机制)

<?php

$value = "defensescrf";

setcookie("cookie",$value,time()+3600);

?>

在表单里加入尾随hash值,以认证这确实是用户发送的请求

<?php $hash = md5($_COOKIE['cookie']); ?> <form method=”POST” action=”transfer.php”> <input type=”text” name=”toBankId”> <input type=”text” name=”money”> <input type=”hidden” name=”hash” value=”<?=$hash;?>”> <input type=”submit” name=”submit” value=”Submit”> </form>

然后在服务端进行hash值验证

<?php       if(isset($_POST['check'])) {            $hash = md5($_COOKIE['cookie']);           if($_POST['check'] == $hash) {                doJob();            } else { //...           }       } else { //...       }      ?>

 

 

这个方法可以杜绝%99

还有用户cookie很容易由于网站的xss漏洞而被盗取,一般的攻击者看到有需要hash值,基本都会放弃,除了某些

2.验证码 每次用户提交都需要用户在表单中填写一个图片上的随机字符串,这个方法可以解决CSRF,但易用性方面不太好,

3.one-time-tokens(不同的表单都包含一个不同的尾随机制)

  在实现one-time-tokens时,u需要注意:并行会话的兼容性。如果用户在一个站点上同时打开两个不同的表单,CSRF保护措施不应该影响到他对任何表单的提交

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值