WebApi - 令牌与 Cookie
WebApi - Tokens vs Cookies
我正在开发一个使用来自 Web 的数据的现有单页应用程序API。
由于应用程序最初是基于 MVC 构建的,因此身份验证主要由 WebSecurity 和 SimpleMembership 通过表单身份验证处理。
我知道这很糟糕 (CSRF),我想通过
修复它
- 实施某种 CSRF 保护(首选)
- 或者通过重新实现身份验证和授权以使用令牌而不是 cookie。
实施 header validation 是否是一个合适的解决方案? API 正在被 Web 和移动客户端使用,以防万一。
我在安全方面不太熟练,想确保我们不会通过在此处使用 cookie 为自己设置漏洞。
好吧,无论如何您都必须保留 cookie,否则您将无法对返回的用户进行身份验证(他们每次打开应用程序页面时都必须进行身份验证)。 (当然还有其他奇特的选择,比如使用客户端本地存储或 "Flash cookies" 但这几乎是相同的方法。)
要回答您的问题,是的,您需要实施 CSRF 保护。选择哪种实现并不重要:它可以是使用自定义 HTTP headers 或其他 WebAPI 请求参数的实现,它可以使用 built-in anti-forgery 实现API(在你提到的文章中有描述)或者你可以自己实现。
我可能会实施自定义 CSRF 保护机制,因为这样您可以使其更适合您的 SPA(例如,您可以通过 WebAPI 响应发送它作为身份验证操作的结果,而不是呈现它到文章中建议的 HTML 或 JS)。
我正在开发一个使用来自 Web 的数据的现有单页应用程序API。
由于应用程序最初是基于 MVC 构建的,因此身份验证主要由 WebSecurity 和 SimpleMembership 通过表单身份验证处理。
我知道这很糟糕 (CSRF),我想通过
修复它- 实施某种 CSRF 保护(首选)
- 或者通过重新实现身份验证和授权以使用令牌而不是 cookie。
实施 header validation 是否是一个合适的解决方案? API 正在被 Web 和移动客户端使用,以防万一。
我在安全方面不太熟练,想确保我们不会通过在此处使用 cookie 为自己设置漏洞。
好吧,无论如何您都必须保留 cookie,否则您将无法对返回的用户进行身份验证(他们每次打开应用程序页面时都必须进行身份验证)。 (当然还有其他奇特的选择,比如使用客户端本地存储或 "Flash cookies" 但这几乎是相同的方法。)
要回答您的问题,是的,您需要实施 CSRF 保护。选择哪种实现并不重要:它可以是使用自定义 HTTP headers 或其他 WebAPI 请求参数的实现,它可以使用 built-in anti-forgery 实现API(在你提到的文章中有描述)或者你可以自己实现。
我可能会实施自定义 CSRF 保护机制,因为这样您可以使其更适合您的 SPA(例如,您可以通过 WebAPI 响应发送它作为身份验证操作的结果,而不是呈现它到文章中建议的 HTML 或 JS)。