CSRF 攻击简记

简记

就是简单介绍一下原理,具体怎么实施,要是我很懂,那估计要很久很久之后了。。。。。。。

参考文章

看下面这个例子,假设某网站B,该网站的URL是:

http://www.hello.com

中有一段代码是这样处理的:

if($_GET['id'] && session('id')){
    //将该id下的所有用户信息打印出来
}

这里你直接去访问该部分代码肯定会报错的,因为肯定要你注册、登录成功后才会在别的地方设置session('id')的,所以网站的搭建者以为这样就可以保证该用户只能访问到自己的个人信息了。

接下来,假设你在登录网站B的情况下,正在访问网站A:

http://www.lucifer.mornig.star.com.cn

这时,里面有一个按钮:送你下地狱,于是你手贱点了一下,却没有想到这个按钮的代码如下:

$url="http://www.hello.com";
var end=10000;
//不确定该用户在另一家网站的id号,所以多尝试几次
for(var index=1;index<end;inde++){
    var id=index;
    $.get($url,{id:id},function(response){
        //这里假设如果错误则返回错误码1001,正确则返回1002与用户的个人信息,这个很号获取的,直接去那个网站体验一下就可以了
        if(response.code!=1001){
            //这里就能获取用户的个人信息了
        }
    });

这里为什么要用户来触发呢?(不一定要用户触发,可以设置$(document).ready()来直接触发,但是起始人一定要是你)因为这里是在以当前用户的身份去访问网站B,则网站B自然会按照当前用户的身份去运行他所拥有的权限。

这里你可能会觉得在浏览网站B的时候同时浏览网站A的可能性不大,那么换个角度,如果你在网站B的缓存没有失效,那么在你关闭网站B的情况下,发送上述请求给网站B,是不是也是有效的呢?肯定的啊。所以这就是CSRF攻击。

Laravel防御

前面说过Laravle CSRF防御的内容,但是那时候不知道什么是CSRF攻击,所以特意百度了一下。Laravel采用的方式就是加入验证令牌,也就是表单中的隐藏项,使用该项来判断这个请求是不是自己发出的,如果不是就直接拒绝处理该请求。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值