具有CSRF和XSS保护的无状态REST API

时间:2018-10-09 09:36:33

标签: rest security jwt xss csrf

是否可以保护无状态REST API免受XSS和CSRF攻击?

当前,我正在使用存储在 secure / httpOnly cookie中的JWT令牌进行无状态身份验证。这样可以保护API免受最常见的XSS攻击:使用XSS注入的JavaScript窃取cookie并将其发送给攻击者。

但是,这不能保护API免受CSRF攻击,攻击者会诱使经过身份验证的用户跟随指向特定Web API调用的链接来代表受害者启动不利交易。在不引入服务器端状态的情况下,如何保护API免受这种攻击?

此外,在以下情况下XSS漏洞是否会继承允许CSRF类型攻击:注入的JavaScript将从客户端状态,DOM或浏览器存储中检索CSRF令牌,并准备对服务器的恶意ajax调用。浏览器仍会为相同的原始请求自动包含httpOnly cookie。除了首先要避免XSS漏洞之外,还有其他方法可以免受此攻击吗?

1 个答案:

答案 0 :(得分:1)

您可以生成令牌(例如UUID)并将其放入jwt令牌中,然后将其发送回客户端。然后,客户端在每个请求中在标头中发送它。然后,服务器可以将标头中的令牌和jwt令牌中的令牌进行比较,以确保请求来自被取消信任的客户端。