我希望使用以API为中心的架构构建一个Web应用程序。
应用程序的前端将使用AJAX向REST API发出请求。
其他客户也将API用于各种目的。我认为使用CSRF令牌可能不适用于它们的实施。
其他方法包括验证标题中的原点,但当然,标题很容易被欺骗。
我如何为此应用程序实施强大的CSRF预防策略?
答案 0 :(得分:1)
一些命题:首先您可以使用像GET api/gime-csrf
这样的api-url将CSRF令牌作为响应返回,并将其设置在http-only
cookie中(因此JS无法访问它 - 但请记住阻止TRACE在服务器中请求以防止XST攻击)。然后,当您进行一些“保存状态”请求(如POST / PUT / PATCH)时 - 您只需将CSRF放入某个请求标头中 - 并在服务器中将标头标记值与Cookie标记值进行比较。