我有一组受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响应头是否安全?如果是这样,那么我可以将它包含在响应标头中,客户端可以将其读出并将其包含在将来的请求标头中。
这样安全吗?
答案 0 :(得分:4)
通常认为在响应头中包含CSRF令牌是安全的。就像请求的主体一样,响应头在SSL响应中加密,并且不能跨域访问。默认情况下,CSRF令牌未呈现给响应的原因是为了确保在必要时延迟创建会话。有关详细信息,请参阅SEC-2276