如何在ASP.NET Core6WebAPI中与iOS或Android等外部用户一起使用防伪令牌?我不需要对请求进行用户身份验证。该应用程序托管在另一个域上。
我已经开发了一个带有防伪令牌(遵循这个链接)和ASP.NET 6 Razor页面的Web。一切都在正常工作。但是,如何开发使用此Web的extern应用程序呢?问题是,我不知道如何从“外部”应用程序创建防伪令牌?如何将应用程序配置为使用带有防伪令牌的Web?
发布于 2022-01-02 21:09:10
在构建API时,没有必要实现针对CSRF攻击的防伪造令牌保护,因为API是如何构建和打算使用的,它们需要不同的保护方法,例如:
因为目标是防止恶意客户端调用我们的API,所以我们需要验证执行对API请求的客户端应用程序的身份。
为了执行CSRF攻击,主要的条件之一是有一个基于Cookie的身份验证会话(看看这个文章,它详细解释了如何执行CSRF攻击),而API的情况并非如此。
但是,如果您使用来自网站的Ajax调用API,并且您依赖Cookie对用户进行身份验证,则可以(而且应该)集成防伪造令牌保护,您可以检查这个在StackOverflow上回答以了解如何实现它的更多细节。
但是,由于您要从外部应用程序调用API,所以只需使用上述方法之一即可。
有关CSRF攻击和如何实现防伪造令牌保护的更多详细信息,请参阅本文在微软文档上的内容。
此外,请查看RedHat的这篇文章,以获得有关API安全性的更多信息。
发布于 2022-08-31 08:43:07
一段时间前,我曾是一名安全拥护者,所以我知道什么是安全(不过最近没有遵循这个主题)。但在每一次会议或培训中,通常有两件事是正确的:
在您的例子中,问题在于API中没有防伪令牌(CSRF保护)。它仅在MVC中可用,并且有一个很好的理由:
所以答案是对你的问题另一个问题。您在API中使用基于Cookie的授权吗?
如果不使用,那么您不应该使用防伪令牌,它不会影响您的API.,否则您应该切换到Bearer,然后设置.。
此外,请忽略编码的答案,因为他们有许多问题。实现将编译,代码肯定会运行,但充满安全问题(Homebrew )。例如存储在Cookie中的令牌,Cookie是浏览器自动附加到请求的CSRF攻击Cookies的基础,GET方法是安全的,甚至无法防止等等。
的本地安全可以提供虚假的信任(是的,我“安全”它)它安全吗?:

发布于 2022-01-02 23:40:23
我不同意“在构建API时没有必要实现防CSRF攻击的防伪造令牌保护”的回答。
在某种程度上,入侵者仍有可能迫使客户端应用程序发送恶意请求。
要在.NET Web中配置防伪造保护(不需要使用Microsoft.AspNetCore.Antiforgery视图),您需要使用包Microsoft.AspNetCore.Antiforgery。
请记住,有两个正在验证的令牌: Cookie令牌和请求令牌(来自HTTP报头)。 // Field IAntiforgery _antiforgery;var tokens = _antiforgery.GetAndStoreTokens(HttpContext); 因此,
tokens将包含以下值: {“"CfDJ8JPuS3COPd9AmHCMBz_IFVdVzR8cfeD2or9v3qMLlWgRiN812hKbkh4o8TpYl4AdA3uJ3FeoY3eozx59q_uSnloXl80nLEd6twLzkDdn4AifcsGWcwaAxWSrGTui0vwl7-SHjftCfkbj9pAlDC_DS0Q",”:CookieToken //忽略它:表单“FormFieldName”的内置机制:"__RequestVerificationToken","HeaderName":“RequestToken”,"RequestToken":"CfDJ8JPuS3COPd9AmHCMBz_IFVfnP50wBywG2WJmFoYA7nx-VGzBjPRY16-p3BBFRMUGHt4cz-M-VrZ_jX_7vUoIt0OX3xhHNw8swt0CebGa4P41cVej2F_DvvayOvrhbY6s3Z2U1aZWHmAvBT8NlH7ueRE“} 注意,CookieToken和RequestToken是不同的。 Cookie令牌被自动处理。但是请求令牌应该由我们来处理。
Microsoft.AspNetCore.Antiforgery包services.AddAntiforgery(options => { options.HeaderName =“XSRF”;});services.AddScoped()};/api/xsrf-token发出请求。
然后读取请求令牌cookie XSRF-TOKEN,并将其设置为非GET请求的X-XSRF-TOKEN HTTP报头:
XSRF令牌:https://stackoverflow.com/questions/70559557
复制相似问题