REST API客户端仅在HTML / JS中

时间:2012-05-31 16:16:19

标签: javascript api rest client csrf

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

1 个答案:

答案 0 :(得分:1)

这是可能的。

CSRF预防通常针对简单网站而非API,因为API通常旨在由其他网站访问。隐藏的面包屑和令牌是防止此类攻击的最常见方法,它们无法在耗材API上正常工作。

您可能需要的是一个良好的主要身份验证机制。易受CSRF攻击的Web应用程序的主要缺点之一是cookie。如果你的API不需要它们,那么使用其他身份验证机制(如OAuth或HTTP Digest)可能就是答案,因此外部用户仍然可以安全地使用API​​(没有令人讨厌的crumb验证)。

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

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