CSRF漏洞

原则上是冒充(借用)用户的身份,与前文中XSS一致需要用户配合,进行攻击。


1 原理

跨站请求伪造,攻击者诱导用户浏览器发送一个伪造的请求→用户已经认证过的服务器,从而执行未授权的操作

2 步骤

(1)用户登录可信网站A,并保持登录状态:登录后即获得了登录会话

(2)攻击者构造恶意请求:攻击者创建了一个恶意的网站B(与A几乎一致),并在其中嵌入了一个指向A的请求,eg:攻击者在B中嵌入了一段HTML或JS代码,者段代码会自动向A发送请求

(3)诱导用户访问恶意网站B,攻击者通过各种方式(钓鱼邮件,恶意链接)

(4)用户在登录状态下访问网站B,B会自动向A发送请求,由于用户的浏览器在发送请求时会附带上A的session、cookie,网站A的服务器会任务这是一个合法的请求,并执行相应的操作。

3 防御

(1)使用CSRF令牌,每次提交表单时,生成一个唯一的随机令牌(Token:随机生成,一般情况下攻击者是拿不到的),并将其嵌入到表单中,服务器在接收到请求时,验证令牌的正确性

(2)检查Referer头:服务器在接收到请求时,会检查Referer头,确认请求时从合法的网站发出的,但是其可以被伪造,不过也增加了一些攻击的难度

(3)使用双重Cookie防御:将令牌存储在Cookie中,并在每个请求中携带该令牌作为参数,服务器验证Cookie中的令牌与请求中的令牌是否保持一致

(4)使用SameSite属性:

将其设置为strict:跨站不附带Cookie

将其设置为Lax:跨站只允许某些指定的页面附带Cookie

(5)避免使用GET请求进行敏感操作

(6)使用一些框架:与前文XSS中一致

4 绕过手法

(1)寻找没有被保护的API端点(没办法,因为代码都是人些的,总有失误的时候)

(2)利用XSS漏洞获取CSRF令牌,然后燃气CSRF攻击,通过XSS,攻击者可以访问页面中的所有内容,包括嵌入的令牌

(3)伪造Referer

(4)利用JSONP漏洞:JSONP时一种早期的跨域数据传输方法,如果应用程序使用JSONP并且没有正确校验来源,攻击者可以利用其响应的数据结合其它技术发起CSRF攻击

(5)利用浏览器特性,可能会暴露CSRF令牌,eg:旧版本的浏览器有时候会自动添加Referer头,暴露之前的合法网站,攻击者可以访问该合法网站进行攻击。


如果各位有什么看法,可以发表在评论区,大家共同进步!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值