C# 如何在控制器中生成防伪cookie和令牌

C# 如何在控制器中生成防伪cookie和令牌,c#,asp.net-mvc,C#,Asp.net Mvc,我正试图在我的应用程序中伪造一个请求,但我不知道如何让这个防伪功能发挥作用。我需要支持一些只能通过web请求调用的遗留代码 我已经能够通过伪造HtmlHelper从控制器获得令牌,但当它尝试验证它时,会出现以下异常: 无法解密防伪令牌。如果此应用程序由Web场或群集承载,请确保所有计算机都运行相同版本的ASP.NET网页,并且配置指定了显式加密和验证密钥 生成令牌的代码: var antiForgeryTokenField = new HtmlHelper(new ViewContext(),

我正试图在我的应用程序中伪造一个请求,但我不知道如何让这个防伪功能发挥作用。我需要支持一些只能通过web请求调用的遗留代码

我已经能够通过伪造HtmlHelper从控制器获得令牌,但当它尝试验证它时,会出现以下异常:

无法解密防伪令牌。如果此应用程序由Web场或群集承载,请确保所有计算机都运行相同版本的ASP.NET网页,并且配置指定了显式加密和验证密钥

生成令牌的代码:

var antiForgeryTokenField = new HtmlHelper(new ViewContext(), new ViewPage()).AntiForgeryToken().ToString();
        var intermediate = antiForgeryTokenField.Substring(antiForgeryTokenField.IndexOf("value=\"") + 8);
        var token = intermediate.Substring(0, intermediate.IndexOf("\""));
我不确定这是否与防暴饼干可能不正确的事实有关?

你通常会

@Html.AntiForgeryToken()

元素中,无论是通过纯HTML还是
@HTML.BeginForm(…)
创建的,然后在控制器中,使用属性
[ValidateAntiForgeryToken]

装饰将接收表单提交后的方法,您可以使用该方法生成反伪造cookie和表单令牌。为
oldCookieToken
传递
null
将生成新的cookie/令牌对


试图使用从另一个应用提取的cookie/令牌对将导致
防伪令牌无法解密。
您遇到的错误消息。正如@chris所提到的,如果这是可能的话,这将是一个安全弱点。

您是否在使用
Javascript
进行这些调用?您正在试图“伪造”一个“反伪造令牌”。这听起来可能吗?坦白地说,防伪代币的存在是为了阻止你的行为。如果你能绕开它,那么他们就不会很擅长他们的工作。不,我是在应用程序中这样做的。我以前听说过有人这样做,所以看起来不太疯狂。