Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有CSRF和XSS保护的无状态REST API_Rest_Security_Jwt_Xss_Csrf - Fatal编程技术网

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

具有CSRF和XSS保护的无状态REST API,rest,security,jwt,xss,csrf,Rest,Security,Jwt,Xss,Csrf,是否可以保护无状态RESTAPI免受XSS和CSRF攻击 目前,我正在使用存储在secure/httpOnly cookie中的JWT令牌进行无状态身份验证。这将保护API免受最常见的XSS攻击:使用注入XSS的JavaScript窃取cookie并将其发送给攻击者 然而,这并不能保护API免受CSRF攻击,在CSRF攻击中,攻击者会诱使经过身份验证的用户跟随指向特定web API调用的链接,以代表受害者启动不利事务。如何在不引入服务器端状态的情况下保护API免受此攻击 另外,XSS漏洞是否真的

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

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

然而,这并不能保护API免受CSRF攻击,在CSRF攻击中,攻击者会诱使经过身份验证的用户跟随指向特定web API调用的链接,以代表受害者启动不利事务。如何在不引入服务器端状态的情况下保护API免受此攻击


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

您可以生成一个令牌(例如UUID)并将其放入jwt令牌中,然后将其发送回客户端。然后,客户端在头中的每个请求期间发送它。然后,服务器可以比较标头中的令牌和jwt令牌中的令牌,以确保请求来自未经身份验证的客户端。

CRSF攻击主要针对cookie,因为如果执行CSRF攻击,这些cookie可能会发送到服务器。因此,一个相对简单的对策是在每个API请求中使用一个特殊的头。此标头甚至不需要携带令牌,例如:
“X-request-With”:“XMLHttpRequest”
实际上就足够了。此外,可以使用httpOnly标志保护Cookie,以防止任何攻击者读取此类Cookie。但是,这些都必须由服务器设置,虽然这两种措施的组合应该是相当安全的(当然,您仍然需要防止各种XSS攻击向量),但它不是无状态的,因为您需要在服务器上进行经典的会话管理。我也有同样的问题,而且还没有找到一个好的解决方案来让所有这些都真正无状态,因为我们还需要保护静态资产,比如html5视频。如果你发现了什么,请告诉我!