WebApi - 令牌与 Cookie

WebApi - Tokens vs Cookies

我正在开发一个使用来自 Web 的数据的现有单页应用程序API。

由于应用程序最初是基于 MVC 构建的,因此身份验证主要由 WebSecurity 和 SimpleMembership 通过表单身份验证处理。

我知道这很糟糕 (CSRF),我想通过

修复它

实施 header validation 是否是一个合适的解决方案? API 正在被 Web 和移动客户端使用,以防万一。

我在安全方面不太熟练,想确保我们不会通过在此处使用 cookie 为自己设置漏洞。

好吧,无论如何您都必须保留 cookie,否则您将无法对返回的用户进行身份验证(他们每次打开应用程序页面时都必须进行身份验证)。 (当然还有其他奇特的选择,比如使用客户端本地存储或 "Flash cookies" 但这几乎是相同的方法。)

要回答您的问题,是的,您需要实施 CSRF 保护。选择哪种实现并不重要:它可以是使用自定义 HTTP headers 或其他 WebAPI 请求参数的实现,它可以使用 built-in anti-forgery 实现API(在你提到的文章中有描述)或者你可以自己实现。

我可能会实施自定义 CSRF 保护机制,因为这样您可以使其更适合您的 SPA(例如,您可以通过 WebAPI 响应发送它作为身份验证操作的结果,而不是呈现它到文章中建议的 HTML 或 JS)。