WebApi - 令牌与Cookie

时间:2016-09-07 22:52:05

标签: c# authentication cookies asp.net-web-api token

我正在处理一个使用WebAPI数据的现有单页面应用程序。

身份验证主要通过表单身份验证使用WebSecurity和SimpleMembership处理,因为应用程序最初是在MVC上构建的。

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

修复它
  • 实施某种CSRF保护(首选)
  • 或重新实现身份验证和授权以使用令牌而不是Cookie。

实施header validation是否足以成为解决方案?如果重要,Web和移动客户端都会使用API​​。

我对安全性并不太熟练,并希望确保我们不会在此处使用Cookie来弥补漏洞。

1 个答案:

答案 0 :(得分:1)

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

要回答您的问题,是的,您需要实施CSRF保护。选择哪个实现并不重要:它可以是使用自定义HTTP标头或其他WebAPI请求参数的实现,它可以使用内置的防伪API(在您提到的文章中描述)实现,或者您可以使用你自己的实现。

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