为每个用户生成不同AntiForgeryToken的方法是什么

发布于 2024-12-24 18:14:28 字数 231 浏览 1 评论 0原文

我正在使用带有 Razor 视图引擎的 MVC3。

我需要为每个用户生成不同的 AntiForgeryToken。

我正在考虑生成一个唯一的盐值,并在用户注册时将其存储在用户表中,并使用该盐来生成令牌,但是如何将该盐值绕过到属性ValidateAntiForgeryToken 。我认为我需要定义一个自定义属性,但我不知道如何进行(通过访问用户信息来使用盐值)。

提前致谢。

I'm using MVC3 with Razor view engine.

I need to generate a different AntiForgeryToken for each user.

I'm thinking of generating a unique salt value and store it in users table when the users registers, and to use that salt to generate the token, but how can I bypass that salt value to the attribute ValidateAntiForgeryToken. I think I need to define a customized attribute but I don't know how would that go (with getting access to user information to use the salt value).

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

熊抱啵儿 2024-12-31 18:14:28

如果您想要不同的盐,那么您需要从现有代码中推出自己的盐或提出一个新方案。

但请记住,这些令牌已经是特定于用户的。以用户 A 身份登录的某人无法使用用户 B 会话中的令牌。

另请注意,它们不是一次性使用的令牌,那么您想在这里阻止什么?使用户 A 无法为用户 B 生成一个吗?再次 - 请记住用户 a 没有以用户 b 身份登录,因此如果这是伪造的,当前完成的检查将会失败。

If you want a different salt, then you'll need to roll your own off the existing code or come up with a new scheme.

However keep in mind, these tokens are already user specific. Someone logged on as user A cannot use a token from user B's session.

Also note they are not one time use tokens, so what are you trying to prevent here? Make it so user A cannot generate one for user b? again - keep in mind user a isn't logged on as user b, so the check that is currently done would fail if this is forged.

冷血 2024-12-31 18:14:28

这是一个非常相似的问题,有一个很好的解决方案:
ValidateAntiForgeryToken Salt 值的运行时加载

基本上,您只需要创建一个 属性,它包装了 ValidateAntiForgeryToken 属性的功能,在运行时使用自定义盐值。

该解决方案的另一件伟大的事情是:该属性可以在控制器级别应用,自动应用于所有 POST 方法。

但是,正如其他人所说,MVC AntiForgeryToken 实现已经使用用户名来生成令牌,因此除非您别有用心,否则这样做不会为您带来任何好处。

Here's a very similar question with a great solution:
runtime loading of ValidateAntiForgeryToken Salt value

Basically, you'll just need to create an attribute that wraps the functionality of the ValidateAntiForgeryToken attribute, using a custom salt value at runtime.

Another great thing in that solution: the attribute can be applied at the Controller level, automatically applying to all POST methods.

However, as others have said, the MVC AntiForgeryToken implementation already uses the username in generating the token, so unless you have ulterior motives, doing this won't gain you anything.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文