CSRF(Cross-Site Request Forgery),即跨站点请求伪造。发起跨站点请求伪造攻击的关键点在于让目标服务器无法分辨众多请求的来源是真实用户还是攻击者。攻击的一般流程为:首先攻击者会诱导用户导航至攻击者提供的网页上。该网页包含一个自动发送到目标服务器的请求。然后该网页正常加载,这个请求就会自动发送至服务器。在服务器看来,这个请求和用户正常发送的请求一模一样,殊不知这是由攻击者发起,而用户却毫不知情。由于该请求携带了用户的一些凭据,攻击者通过解析这些凭据,就可以获取用户信息,进而产生安全风险。
本文介绍了 Apache APISIX 的 CSRF 安全插件 csrf
,并详细说明如何在 Apache APISIX 中借助 csrf
插件来保护您的 API 信息安全。
插件介绍
csrf
插件基于 Double Submit Cookie
方案实现。根据 RFC 7231#section-4.2.1 的定义,我们把 GET
、HEAD
和 OPTIONS
这三种方法称为安全方法。按照这一约定,csrf
插件会直接放行这三种方法,但会对其他的方法做检查并拦截其中的不安全请求。
为了抵御 CSRF 攻击,我们需要制造一个无法伪造的令牌或标识符,并且保证这个不会与攻击者的请求一起发送。用户需要将 csrf
插件依赖的 token 携带在请求头,token 使用密