MVC AntiForgeryToken机器密钥加密,如何确保长尾词安全?

2026-03-30 12:251阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计467个文字,预计阅读时间需要2分钟。

MVC AntiForgeryToken机器密钥加密,如何确保长尾词安全?

我了解到:在后台,MVC框架使用machinekey属性对AntiForgeryToken进行加密。若web.config中未指定machinekey,ASP.NET会自动为您生成一个。重启ASP.NET应用(如执行iisreset)后,浏览器cookie中将包含新的machinekey。

我开始知道:在幕后,MVC AntiForgeryToken属性使用machinekey进行加密.如果未在web.config中指定machinekey,则ASP.NET会自动为您生成一个.

如果重新启动ASP.NET应用程序(例如,执行iisreset),浏览器cookie中的AntiForgeryToken仍将使用旧机器密钥加密,因此它会因上述错误而崩溃.

我担心的是

MVC AntiForgeryToken机器密钥加密,如何确保长尾词安全?

在web.config中写入机器密钥之前,我想知道我应该在哪里寻找要复制的机器密钥.粘贴在web.config中.当我们在本地电脑上测试时,我们可以复制&将机器密钥粘贴到web.config中但是当我们将在godady或ORCSWEB中托管我们的站点时,那些公司可能不会提供我们的站点将托管的pc的机器密钥.所以我需要知道如何处理这种情况.谢谢

编辑

<configuration> <system.web> <machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B" decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F" validation="SHA1" decryption="AES" />

如何获取或生成validationKey& decryptionKey分开?任何的想法?

If the ASP.NET application is restarted (e.g. do an iisreset), the
AntiForgeryToken within the browser cookie will still be encrypted
with an old machine key???

我认为机器密钥不会随iisreset而改变.

您可以自己生成机器密钥(验证和解密密钥)并在web.config中指定它.在执行加密的所有情况下将使用相同的密钥,例如, Auth票,AF令牌.

一个很好的介绍link.

更新:

如何生成机器密钥?

有各种各样的方法,这个msdn blog建议使用IIS,当我使用Microsoft工具时,它对我来说看起来更安全.但是,似乎只有IIS 7才支持此功能.我在IIS 8.5的盒子上找不到它.我检查了IIS 7.5,它也不在那里.但是,我在同事箱上的IIS 6.1中找到了它.

第二种选择是使用自定义密钥生成器

一个. Machine Key Generator(在线)

湾ASP.NET machineKey Generator(你可以修改的工具)

标签:MVCAnti

本文共计467个文字,预计阅读时间需要2分钟。

MVC AntiForgeryToken机器密钥加密,如何确保长尾词安全?

我了解到:在后台,MVC框架使用machinekey属性对AntiForgeryToken进行加密。若web.config中未指定machinekey,ASP.NET会自动为您生成一个。重启ASP.NET应用(如执行iisreset)后,浏览器cookie中将包含新的machinekey。

我开始知道:在幕后,MVC AntiForgeryToken属性使用machinekey进行加密.如果未在web.config中指定machinekey,则ASP.NET会自动为您生成一个.

如果重新启动ASP.NET应用程序(例如,执行iisreset),浏览器cookie中的AntiForgeryToken仍将使用旧机器密钥加密,因此它会因上述错误而崩溃.

我担心的是

MVC AntiForgeryToken机器密钥加密,如何确保长尾词安全?

在web.config中写入机器密钥之前,我想知道我应该在哪里寻找要复制的机器密钥.粘贴在web.config中.当我们在本地电脑上测试时,我们可以复制&将机器密钥粘贴到web.config中但是当我们将在godady或ORCSWEB中托管我们的站点时,那些公司可能不会提供我们的站点将托管的pc的机器密钥.所以我需要知道如何处理这种情况.谢谢

编辑

<configuration> <system.web> <machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B" decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F" validation="SHA1" decryption="AES" />

如何获取或生成validationKey& decryptionKey分开?任何的想法?

If the ASP.NET application is restarted (e.g. do an iisreset), the
AntiForgeryToken within the browser cookie will still be encrypted
with an old machine key???

我认为机器密钥不会随iisreset而改变.

您可以自己生成机器密钥(验证和解密密钥)并在web.config中指定它.在执行加密的所有情况下将使用相同的密钥,例如, Auth票,AF令牌.

一个很好的介绍link.

更新:

如何生成机器密钥?

有各种各样的方法,这个msdn blog建议使用IIS,当我使用Microsoft工具时,它对我来说看起来更安全.但是,似乎只有IIS 7才支持此功能.我在IIS 8.5的盒子上找不到它.我检查了IIS 7.5,它也不在那里.但是,我在同事箱上的IIS 6.1中找到了它.

第二种选择是使用自定义密钥生成器

一个. Machine Key Generator(在线)

湾ASP.NET machineKey Generator(你可以修改的工具)

标签:MVCAnti