0

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

4

1 回答 1

1

这是可能的。

CSRF 预防通常针对简单的网站,而不是 API,因为 API 通常旨在被其他网站访问。隐藏的 crumbs 和 token 是防止此类攻击的最常用方法,但在可消耗的 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 进行隧道传输。您可能需要进一步研究它们的实现。

于 2012-05-31T16:33:02.950 回答