gpt4 book ai didi

asp.net-web-api - ValidateAntiForgeryToken如何与可通过Web或 native 应用程序访问的Web API配合使用?

转载 作者:行者123 更新时间:2023-12-04 04:18:00 25 4
gpt4 key购买 nike

我试图了解如何使用ASP.NET Web API来制作API,该API会受到CSRF的保护,同时仍可从非Web环境(例如 native 移动应用程序)访问。

我首先想到的是,非Web环境永远无法成功通过防伪 token 验证,因为它没有张贴的表单。这是真的?有什么方法可以使验证工作?

如果没有验证方法,我的第二个想法是提供一个API,该API可以验证针对网络调用的伪造 token ,而不是针对非Web调用的防伪 token 。但是,似乎攻击者同样可以轻松地使用此“非网络” API进行CRSF攻击,对吗?

非Web API仅需要支持非Web身份验证机制(OAuth?)以便不能通过浏览器重播对它的请求的答案是吗?还是有更简单的方法?

如果那是唯一的方法,是否有一种简单的方法可以关闭所有不安全的身份验证机制? ASP.NET Web API中是否应该有一条简单/快乐的路径来支持这些方案?

最佳答案

仅当您使用持久性身份验证机制(例如cookie,基本身份验证,NTLM等)时,CSRF才成为问题。Mike Wasson在Javascript中针对Webapi使用CSRF的an example-并且我已经在DelegatingHandlers中看到了版本...。

由于CSRF只是Web场景中的一个问题,因此您可以辩称,实际上没有必要检查非Web请求。来自浏览器的每个ajax请求,无论是通过jquery, native XmlHttpRequest类还是任何带有 header 的东西-X-Requested-With,其值都为XMLHttpRequest。因此,您可以将CSRF检查限制为仅带有该 header 的请求,因为没有它的所有内容都必须来自浏览器外部。

话虽如此,如果您要进行身份验证,我将查看某种共享的 secret 或OAuth机制,并让DelegatingHandler服务器端进行验证,然后在网络应用中将 token 放置在可以通过javascript和通过X-Authentication header 发送-由于它不是持久性的,因此需要附加到每个请求中(就像CSRF token 一样),因此不会出现CSRF问题。一如既往,多米尼克(Dominick)documents很好。

关于asp.net-web-api - ValidateAntiForgeryToken如何与可通过Web或 native 应用程序访问的Web API配合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15755607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com