前端安全学习-CSRF(跨站请求伪造)

背景知识:
SOP-同源安全策略(限制一些跨源访问)
SOP未限制的方法:使用HTML tag嵌入资源,img script link等,或者使用form提交请求到外部站点

HTTP的一些了解:
1.有些http请求会携带cookie,但受SOP限制,cookie不能跨站访问。
2.HTTP跨站请求时,只是浏览器限制了请求的响应,但请求会成功。

CSFR:跨站请求伪造
依靠SOP未限制的方法和HTTP请求的特殊现象,伪造的请求动作。
伪造目的:借用用户的身份去执行用户的操作。

GET请求举例:
www.bank.com是个用户群很广的银行网站

黑客在某论坛帖子下发表评论中使用图片,图片地址为:http://www.bank.com/zhuanzhang.php?money=1000&to=骗子

论坛的用户浏览这个帖子,页面会就发起请求,请求地址:http://www.bank.com?money=1000&to=骗子

携带的参数有:
1.URL上的money和to(假设表示转账金额和收款账户)
2.用户在www.bank.com中的cookie(若用户刚刚访问过https://www.bank.com,则浏览器还保留着未过期的cookie,其中可能包含用于执行交易的认证信息)

若www.bank.com不做任何防护,只通过URL参数或cookie中的信息认证用户身份。
那服务器就会执行这次请求。!!即使因SOP限制,未将执行结果响应给该论坛。

POST请求举例:
黑客在自己的站点页面(www.forgBank.com)中编写了一段form表单并用js提交表单。
通过广告等方式引诱用户访问。

<form id="myForm" action="http://www.bank.com" method="POST">
    <input name="money" value='1000' />
    <input name="to" value='骗子' />
</form>
<script>
document.getElementById('myForm').submit();
</script>

相比get,需要在自己的页面编写代码,并引诱用户访问,增加了暴露风险。
所以限制接口请求类型为POST能填补一些CSRF漏洞。

CSRF防御:
1.敏感操作限制POST请求,降低风险。
2.Anti CSRF Token(业界常用方法):使用token验证
服务器生成认证用户的token,保存并返回给客户端。
客户端发送请求时携带token(传参或header)。
服务器校验token有效性,有效则继续执行。
3.校验referer
referer是http请求头属性,表示请求的来源
后端可以获取并判断拦截
可用于防止图片盗链
客户端不能用js篡改,但用一些插件如fiddler可以伪造
4.CORS预检请求
服务器配置CORS访问权限 当请求为预检请求时(复杂的header或application/json请求),会先发送权限请求(options),该请求只会返回结果,并不会执行任何操作,客户端获取权限后再次请求。这样会在options请求后拦截一些跨站伪造请求。
5.敏感操作使用验证码,如支付 登录等,缺点:对用户不友好

参考文档:
浏览器的同源策略
同源策略和CSRF
CSRF攻击与防御(写得非常好)
安全|常见的Web攻击手段之CSRF攻击

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值