将REST服务的CSRF令牌包含为Http响应头是否安全?

时间:2014-02-07 11:15:59

标签: java rest spring-security csrf owasp

我有一组受CSRF保护的REST服务,使用类似于OWASP的同步器令牌模式(https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet)。  * REST使用Java和JAX-RS实现  *使用Spring Security CSRF令牌实现安全性  * HTTP PUT,POST和DELETE受保护

在我的Web-App启动时,我在HTML页面中编写了正确的CSRF令牌,然后应用程序在每个请求的请求标头中包含令牌“X-CSRF-HEADER”。

我也有直接访问URL的客户端(例如curl命令行和其他人)。

备用客户端需要以某种方式获取CSRF令牌(当然是在进行身份验证之后)。

将令牌包含为GET请求的HTTP响应头是否安全?如果是这样,那么我可以将它包含在响应标头中,客户端可以将其读出并将其包含在将来的请求标头中。

这样安全吗?

1 个答案:

答案 0 :(得分:4)

通常认为在响应头中包含CSRF令牌是安全的。就像请求的主体一样,响应头在SSL响应中加密,并且不能跨域访问。默认情况下,CSRF令牌未呈现给响应的原因是为了确保在必要时延迟创建会话。有关详细信息,请参阅SEC-2276