【问题标题】:How to prevent CSRF in API-Centric Web Application如何在以 API 为中心的 Web 应用程序中防止 CSRF
【发布时间】:2018-06-29 05:30:34
【问题描述】:

我希望使用以 API 为中心的架构构建一个 Web 应用程序。

应用程序的前端会使用 AJAX 向 REST API 发出请求。

其他客户端也将 API 用于各种目的。我认为 CSRF 令牌的使用可能不适用于它们的实现。

其他方法包括验证标头中的来源,但当然,标头很容易被欺骗。

我怎样才能为此应用程序实施强大的 CSRF 预防策略?

【问题讨论】:

  • 您的 API 如何对客户端进行身份验证?不记名令牌? cookie 中的会话 ID 或令牌?

标签: rest security api-design csrf-protection


【解决方案1】:

一些提议:首先你可以使用像GET api/gime-csrf这样的api-url,它返回CSRF令牌作为响应,并将它设置在http-only cookie中(所以JS无法访问它 - 但记住要阻止服务器中的TRACE请求防止 XST 攻击)。然后,当您发出一些“保存状态”请求时,例如 POST/PUT/PATCH - 您只需将 CSRF 放入某个请求标头中 - 在服务器中您将标头令牌值与 cookie 令牌值进行比较。

【讨论】:

    猜你喜欢
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 2017-07-31
    • 1970-01-01
    • 2016-01-22
    • 2016-10-10
    • 2017-07-02
    相关资源
    最近更新 更多