CSRF 跨站请求伪造 防御方案

一.什么是CSRF跨站攻击?

名词解释(Cross-site request forgery)是跨站请求伪造.

攻击原理图:

1. 用户c在a站(www,abc.com)上登陆, a站会将登录信息保存在用户的Cookies中.

2.b站被黑客攻破,在某个页面上注入一串html代码:

如: <div style="displaty:none">

<img src="http://www.abc.com:8081/DEMO_WEB/doTransfer?transfer_accounts=2&transfer_money=50"http://www.abc.com:8081/DEMO_WEB/doTransfer?transfer_accounts=2&transfer_money=50""></div>

图片链接 是 用户在A站上转账的请求url,即向id为2的用户转账50元。

 3. 用户c访问b站这个页面的时候,就会自动想a站发送该请求.由于用户c已经在a站上登录,已经有登录cookies,所以a站会认为是用户c已登录,并处理转账请求,就这样在用户c不知道的情况下转出50元.

 

CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种常见的Web应用程序安全漏洞,攻击者利用此漏洞在未经授权的情况下对用户进行身份验证和提交表单等操作。 以下是防御CSRF攻击的一些常见措施: 1. 随机化Token:应用程序可以在表单中嵌入一个随机的令牌(Token),这个Token的值是动态生成的,每次请求时都会不同,这样攻击者就无法通过构造一个伪造的表单来通过验证。 2. 检查Referer:在服务器端进行验证,检查HTTP请求的Referer头部信息,以确保请求是来自正确的来源。但是,这种方法也有其限制,因为一些浏览器和代理服务器不会发送Referer头部信息。 3. Cookie设置:限制cookie的访问,以确保cookie不能在不同的域名或子域名下被访问。例如,可以使用HttpOnly标志禁止JavaScript访问cookie,或使用SameSite标志限制cookie只能由同一站点请求使用。 4. 双重确认:对于关键操作(例如修改密码或删除帐户),可以要求用户在执行操作前进行额外的确认,例如输入密码或提供双重身份验证(如OTP)。 5. 输入验证:应用程序应该对输入进行验证和过滤,以防止攻击者利用恶意数据进行攻击。例如,应该限制输入长度、验证输入格式,过滤特殊字符等。 这些措施并不是绝对的,但是它们可以帮助减少CSRF攻击的风险。在开发应用程序时,还应该遵循其他安全最佳实践,如避免使用不安全的库、保持应用程序的软件和系统更新、监视应用程序日志等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值