bdu*_*kes 9 antiforgerytoken asp.net-web-api
我正在尝试理解如何使用ASP.NET Web API来创建API,该API将受到CSRF保护,同时仍可从非Web环境(例如本机移动应用程序)访问.
我的第一个想法是,非Web环境永远无法成功通过防伪令牌验证,因为它没有发布的表单.这是真的?有没有办法让验证工作?
如果没有办法验证,我的第二个想法是提供一个API,用于验证Web调用的防伪标记,但不能用于非Web调用.但是,似乎攻击者可以轻松地使用这种"非网络"API进行CRSF攻击,对吧?
非Web API需要的答案是仅支持非Web身份验证机制(OAuth?),以便无法通过浏览器重播对它的请求吗?或者有更简单的方法吗?
如果这是唯一的方法,是否有一种简单的方法来关闭所有不安全的身份验证机制?ASP.NET Web API中是否应该有一些简单/快乐的路径来支持这些场景?
当您使用诸如cookie,基本身份验证,NTLM等持久性身份验证机制时,CSRF只会成为一个问题.Mike Wasson有一个在Javascript中使用CSRF对webapi 的示例 - 我在DelegatingHandlers中看到过版本....
由于CSRF只是Web场景中的一个问题,因此您可以认为没有必要检查非Web请求.来自浏览器的每个ajax请求,无论是通过jquery,本机XmlHttpRequest类还是带有标头的任何内容 - X-Requested-With,其值都为XMLHttpRequest.因此,您可以将CSRF检查限制为仅具有该标头的请求,因为没有它的任何内容必须来自浏览器之外.
话虽如此,如果您正在进行身份验证,我会查看某种共享密钥或OAuth机制,并让DelegatingHandler服务器端进行验证,并且在Web应用程序中只需将令牌放在可以通过javascript获取的地方.通过X-Authentication标头发送 - 因为它不是持久性的,需要附加到每个请求(就像CSRF令牌),没有CSRF问题.多米尼克和以往一样,很好地记录了这类事情.
| 归档时间: |
|
| 查看次数: |
7711 次 |
| 最近记录: |