注意安全(2)!XSRF跨站伪造请求

本文介绍了XSRF(跨站伪造请求)的攻击原理,指出其利用用户浏览器的cookie欺骗服务器进行恶意操作。同时,讨论了CORS在跨域请求中的角色,并提出两种防御策略:限制CORS的源白名单和使用Token进行二次身份验证。通过示例代码展示了如何在服务器端实施这些防御措施,提醒前端开发者关注网络安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明: 感觉简书上讨论技术的并不多,把一部分博文转到优快云上,希望可以和各位同学一起学习讨论。

上一篇我们说了用脚本注入去攻击小熊哥的博文评论。普通的脚本注入很容易就被前端后台全方位的脚本过滤给处理掉,完全没有杀伤力。一般来说遇到<, > , =” 等等可能加载执行脚本的用户输入,转换为&lt ; & gt ; 等等即可作为数据打印到 DOM 中,而不是作为脚本执行。详细情况参考上一篇文章 。我敢保证,@Swanky 肯定是受了我的蛊惑去 POST 了 三万多条评论导致被 @简书首席封号官 封号了。

伪造请求的过程

这次来说说伪造请求(Cross Site Request Forgery)的事情。通俗点讲就是 有人给你发送了一个链接,然后你手贱点开,是看起来很正常的网页(A.com/index.html),结果暗中被发送了一个指向 招商银行转账服务(B.com/transfer) 的POST请求,这个请求是攻击者在A.com/index.html 脚本中伪造的,因此请求的发送方属于A.com域,而不属于B.com/transfer 的域, 所以叫做 跨站伪造请求

// attack.html. 为了在这个伪造的网页中自动发送请求并且带上 受害用户的cookie,
// 一般都会在hidden iframe中加载一份正规网站的页面,而且攻击表单也是隐藏的。
// 表面上这个伪造网页是很正规的,并无异常。
  <form id="thisForm" method="POST" target="_blank" action="http://www.bank.com/transfe
客户端支持防止CSRF/XSRF跨站请求伪造)的方法主要包括以下几种: 1. 验证码:在敏感操作如支付、修改密码等环节,向用户发送验证码,要求用户输入正确的验证码后才允许进行操作。这样可以有效防止CSRF攻击,因为攻击者无法获取有效的验证码。 2. Token验证:在用户登录时生成一个随机的Token,并将其储存在Session或Cookie中,每次向服务器发起请求时都需要将该Token一同发送。服务器接收到请求后会校验Token的合法性,如果无效则拒绝该请求。这可以防止CSRF攻击者盗用用户身份发起恶意请求。 3. Referer检查:在HTTP头部中会包含Referer字段,用于表示请求来源。服务器可以根据Referer字段的值判断请求是否来自合法来源,如果不是则拒绝请求。但需要注意的是,Referer字段不是必须的,而且可能被篡改,因此这种方法并不是绝对可靠。 4. SameSite Cookie属性:使用SameSite属性可以限制Cookie的发送,使其只在同一站点下请求时才会被发送。这样可以防止跨域请求中Cookie的被盗用。但需要注意的是,SameSite属性支持程度不同浏览器有所差异,不同浏览器可能需要额外的配置或使用其他方法来提供更好的保护。 总体而言,以上几种方法并非绝对安全,各自有一定的局限性。因此,最好的防范方法是综合使用多种防护措施,加强客户端和服务端的安全防护。此外,开发人员还应持续关注最新的安全技术和漏洞情报,及时更新和修复系统,确保用户数据的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值