首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在控制器中生成防伪cookie和令牌?

如何在控制器中生成防伪cookie和令牌?
EN

Stack Overflow用户
提问于 2014-12-19 03:26:17
回答 2查看 1.5K关注 0票数 2

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

我已经能够通过伪造HtmlHelper从控制器获得一个令牌,但是当它试图验证它时,它给了我这个异常:

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

生成令牌的代码:

代码语言:javascript
复制
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("\""));

我不确定这是否与防伪cookie可能不正确有关?

EN

回答 2

Stack Overflow用户

发布于 2014-12-19 04:04:51

你通常会把

代码语言:javascript
复制
@Html.AntiForgeryToken()

<form>元素中,无论是通过纯HTML还是@Html.BeginForm(...)创建的,然后在控制器中,使用[ValidateAntiForgeryToken]属性装饰将接收表单提交后的方法。

票数 1
EN

Stack Overflow用户

发布于 2020-05-19 14:08:04

您可以使用AntiForgery.GetTokens()方法生成防伪cookie和表单令牌。传递oldCookieTokennull将生成新的cookie/令牌对。

尝试使用从另一个应用程序提取的cookie/令牌对将导致您遇到的The anti-forgery token could not be decrypted.错误消息。正如@chris提到的,如果这是可能的,这将是一个安全漏洞。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27554179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档