前端安全CSRF篇

2018-08-07  本文已影响0人  luckyQAQ

CSRF(跨站请求伪造)

简单场景

基本流程:假设A网站是合法的,B网站是恶意网站

小明是一个A网站的注册用户,一般登陆后,网站都会把用户凭证放在cookie中,在一定时期内小明再访问A网站就不需要重新登陆了。

假设在这个有效期内,小明访问了B网站的一个恶意链接(可以是点击也可是打开网页等),B网站精心设置了一系列操作,利用小明A网站的登陆信息访问了A网站的一系列接口。比如删除接口等等。

案例举到这里可以看出,要实现CSRF攻击主要满足:

1.A网站对应的接口要有漏洞

2.小明已经登陆了A网站,具有凭证

如何防御?

1.设置cookie的SameSite属性

由于CSRF相当于利用登陆用户的cookie(不能修改),而SameSite属性只有同一个网站才可以使用

缺点:这个属性目前兼容性比较差

2.服务端验证客户端请求中的refer字段

r缺点:refer可以比较容易的进行抓包修改

3.在网站前端(A网站)设置csrf_token

对应post请求可以再表单中添加隐藏的input标签,设置值为csrf_token

对于get请求可以设置在meta标签中等

然后每次刷新页面csrf_token需要改变,可以在cookie中也设置csrf_token,然后服务端判断两个cookie是否相等决定响应

上一篇下一篇

猜你喜欢

热点阅读