同源策略为什么可以防csrf_[Security] 2- CSRF

5a50f8037da9af499964b5109a76a546.png

1. CSRF 是什么?

  • 跨站请求伪造 Cross-site request forgery
  • 伪造真实用户身份,对程序进行恶意攻击。
  • 解释: 用户身份是好的, 但是某人获取到了该信息后,借用真实好身份去做坏事儿。

2. 攻击流程

例子: 
1. 一家银行的转账地址为: www.a.com/withdraw?from=A&to=B&amount=1000
2. 一个攻击者在www.b.com 放置代码为: <img src="www.a.com/withdraw?from=A&to=B&amount=1000" />

例如A用户刚给B转完账,登录状态还没有失效,如果www.a.com没有安全措施,可能会让A损失1000元

所以就是: CSRF 不能获取 用户任何信息,但是是欺骗浏览器,以用户名义来访问

CSRF通常是跨域的,img标签, a标签等外域都可能被攻击者掌控。
浏览器打开A网站
页面发起请求
1. 当前页面的请求
- img
- js
- link
- iframe
- 接口请求等

2. 会改变当前页面,可能打开别的页面
- a tag
- location.href
- window.open()

3. CSRF 特点

  • 发生在第三方域名
  • 获取到cookie信息 ❌ 应该是 【以用户名义来访问,不是获取】✅。

4. [1] 同源验证 (来源域名检测) - 请求头referer/origin校验

  • 既然CSRF大多来自第三方网站,那么我们就直接禁止外域(或者不受信任的域名)对我们发起请求。
  • 来源域名的检查

HTTP: header Referer / Origin 标记请求来源。

从google地址: https://www.google.com.hk/search?q=%E7%9F%A5%E4%B9%8E&oq=%E7%9F%A5%E4%B9%8E&aqs=chrome.0.69i59j0j69i61l3j69i65l3.1864j0j7&sourceid=chrome&ie=UTF-8

访问知乎

Referer值为Host 可以不带Path

414d2e44fd13525fc539abbc60a249e4.png

同源验证是一个相对简单的防范方法,能够防范绝大多数的CSRF攻击。

4. [2] CSRF TOKEN

对于敏感信息获取或请求时候,如何做身份的校验?

  • cookie 设置,samesite设置下,【只允许同源发送cookie】
  • 将token写在session里面。
  • 发送请求,带上这个token,验证传来的token 和 服务器上的token 是否一致。

f76b1a139faabd15481a9ad778c070d8.png
  • Token = useid + 时间戳 + 随机数 => 加密 => token
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值