如何解决在ASP.NET 4.x和ASP.NET Core之间进行CSRF验证
全部!
我想知道以下情况是否可行
- 我想从asp.net 4.7向asp.net core 3.1发出发布请求。
- asp.net 4.7和core都存在于同一IIS网站上。
- asp.net 4.7存在于网站根目录中。 (http:// localhost)
- asp.net核心作为站点(http:// localhost / sub1)的应用程序存在
- asp.net 4.7和启用核心的CSRF(防伪)。
由于Asp.net 4.7的CSRF依赖于Machine Key,因此我跟随本文更改了asp.net 4.7应用程序。 https://docs.microsoft.com/ko-kr/aspnet/core/security/data-protection/compatibility/replacing-machinekey?view=aspnetcore-3.1
asp.net核心和4.7应用程序都在同一目录中存储密钥。
services.AddDataProtection()
.SetApplicationName("testapp")
.PersistKeysToFileSystem(new DirectoryInfo(@"C:\Temp\keys"));
这是asp.net 4.7页面,该页面向asp.net核心应用发出发布请求。
@using (@Html.BeginForm(null,null,FormMethod.Post,new { @action = "http://contoso/sub/mypage" }
))
{
@Html.AntiForgeryToken()
<input type="submit" value="Submit" />
}
我认为它会起作用,但是当我从asp.net 4.7拨打电话时, 我从asp.net核心收到400错误。我发现的一件事是,直接从asp.net核心调用页面并从asp.net 4.7页面发送发布消息时,RequestVerificationToken值不同。 那么这可能吗? 谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。