csrftoken使用csrf_token防护csrf攻击是怎么做到的?

csrftoken使用csrf_token防护csrf攻击是怎么做到的?
最新回答
洞房不败

2021-01-07 10:02:58

CSRF攻击攻击原理

CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络攻击方式。攻击者利用用户信任的网站向目标网站发送恶意请求,从而在用户不知情的情况下执行非法操作。攻击者通过在目标网站访问过程中,利用恶意网站的脚本注入,自动向目标网站发送请求。由于浏览器会自动携带cookie信息,攻击者便能欺骗目标网站执行恶意操作,如转账等。

防御CSRF攻击

对于GET请求,因其不会造成服务器数据变更,防御策略主要是运行。对于表单防御,通常在网页源代码中加入随机字符串csrf_token,并将相同值的字符串加入到cookie中。后续向服务器发送请求时,必须在body和cookie中都携带csrf_token。服务器仅当检测到cookie和body中的csrf_token相同时,才认为请求有效。伪造网站无法从目标网站cookie中获取正确的csrf_token,因此无法伪造请求头。

Ajax POST请求防御

使用ajax处理CSRF防御时,需手动添加X-CSRFToken请求头。通过从返回的cookie中提取csrf token,并将其设置到header中。示例代码如下。

何时禁用CSRF

在无cookie方案如使用session或jwt等无状态票据的情况下,可能需要禁用CSRF保护,以适应非浏览器客户端的特定场景。