【问题标题】:REST API Client only in HTML / JS仅在 HTML / JS 中的 REST API 客户端
【发布时间】:2012-06-05 22:26:39
【问题描述】:

是否可以仅在 HTML / JS 中为 REST API 创建客户端并防止 CSRF?

【问题讨论】:

    标签: javascript api rest client csrf


    【解决方案1】:

    有可能。

    CSRF 预防通常针对简单的网站,而不是 API,因为 API 通常旨在被其他网站访问。隐藏的碎屑和令牌是防止此类攻击的最常用方法,但在可消耗的 API 上无法正常工作。

    您可能需要一个良好的主要身份验证机制。易受 CSRF 影响的 Web 应用程序的主要弱点之一是 cookie。如果您的 API 不需要它们,则使用另一种身份验证机制(如 OAuth 或 HTTP Digest)可能是答案,因此外部用户仍然可以安全地使用 API(没有讨厌的碎屑验证)。

    HTTP Auth Basic 和 OAuth 2.0 在 JS 客户端应用下都是可行的。这里有一个 OAuth2 的演示:https://gist.github.com/563893

    Twitter 在主网站内使用自己的公共 API,因此有证据表明这样的事情是可能的,尽管我不确定它们如何具体防止外部 CSRF。每个请求都由接收器(位于此处:https://api.twitter.com/receiver.html)发出,并且授权令牌通过 cookie 进行隧道传输。您可能需要进一步研究它们的实现。

    【讨论】:

    • 如何在客户端存储密钥? (我的客户端是浏览器)
    猜你喜欢
    • 1970-01-01
    • 2016-01-04
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 2017-08-11
    • 1970-01-01
    相关资源
    最近更新 更多