CSRF如何防范

前言

CSRF的全程是Cross Site Request Forgery, 即跨站请求伪造。深入了解CSRF后会发现,这种攻击非常危险,并且很容易就忽视掉。那到底什么是CSRF呢,我们通过一个案例来了解一下

案例

有这么一个简单的后台页面,可以发表、删除以及编辑文章,点击删除的那个按钮,就可以把一篇文章删掉。因为偷懒,想说如果我把这个功能做成 GET,我就可以直接用一个链接完成删除这件事,在前端几乎不用写到任何代码:

<a href='/delete?id=3'>删除</a>

很方便对吧?然后我在后端那边做一下验证,验证 删除的request的cookie 有没有带 session id 上来,也验证这篇文章是不是这个 id 的作者写的,都符合的话才删除文章。

嗯,听起来该做的都做了啊,我都已经做到:「只有作者本人可以删除自己的文章」了,应该很安全了,难道还有哪里漏掉了吗?

没错,的确是「只有作者本人可以删除自己的文章」,但如果他不是自己「主动删除」,而是在不知情的情况下删除呢?你可能会觉得我在讲什么东西,怎么会有这种事情发生,不是作者主动删的还能怎么删?

好,我就来让你看看还能怎么删!

今天假设小黑是一个邪恶的坏蛋,想要让小明在不知情的情况下就把自己的文章删掉,该怎么做呢?
小黑知道小明很喜欢心理测验,于是就做了一个心理测验网站,并且发给小明。但这个心理测验网站跟其他网站不同的点在于,「开始测验」的按钮代码长得像这样:

<a href='https://Livingblog.com/delete?id=3'>开始测试</a>

是不是觉得开始不对劲了?

小明收到网页之后很开心,就点击「开始测验」。点击之后浏览器就会发送一个 GET 请求https://Livingblog.com/delete?id=3,并且因为浏览器的运行机制,一并把 Livingblog.com 的 cookie 都一起带上去。

Server 端收到之后检查了一下 session,发现是小明,而且这篇文章也真的是小明发的,于是就把这篇文章给删除了。

这就是CSRF, 你现在明明在心理测验网站,假设是 https://test.com 好了,但是却在不知情的状况下删除了 https://Livingblog.com 的文章

更有甚者,如果把get请求放在一张看不见的图片链接里:

<img src='https://Livingblog.com/delete?id=3' width='0' height<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值