问题标签 [machinekey]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
27071 浏览

asp.net-mvc - 即使在本地主机中也无法解密防伪令牌?

即使我在 localhost 中运行,我的 mvc 网站也给了我这个错误:

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

我使用了这个机器密钥:

但还是没有用。另外,我从第三方提取了这个机器密钥。我知道这不安全但微软的方式太复杂了:使用powershell生成它?复杂。然后使用IIS?我的 IIS8 没有显示 machinekey 模块。所有这些东西到底是怎么回事。

好的,可能错误是由多个@html.antiforgerytoken 引起的。好吧,我确实有两个防伪令牌,但是当我删除其中一个时,错误仍然存​​在。

我对这个问题感到非常沮丧。我希望有人会好心帮忙。相信那些MVC用户在开发MVC网站的时候也遇到过这种情况。就我而言,我只是一个新手,这是我部署的第一个 MVC 网站。

谢谢你的帮助

更新

控制器:

看法:

布局:

登录部分:

.NET 版本:4.5

0 投票
0 回答
1087 浏览

azure - 在 Azure 中托管时指定 machineKey 的推荐方法是什么

我试图找出在使用多台服务器时在 Azure 云服务 Web 角色和 Azure 网站中托管时为站点设置 MachineKey 的最佳方法。

我似乎可以找到几个提议的解决方案,但对我来说似乎没有一个是正确的。

  1. 使用会话亲和性(在网站中默认启用)
    • 虽然这可能有效,但感觉就像是一种解决方法。出于故障转移的目的,人们会选择拥有多个服务器的原因,但这意味着与损坏的服务器有密切关系的客户端无法针对另一台服务器运行,这不是在某种程度上破坏了故障转移的对象吗?
  2. 在 web.config 转换中设置 machineKey
    • 这需要将机器密钥存储在源代码控制下,这会破坏使用机器密钥的加密对象。
  3. 完成了对机器密钥的依赖,所以你不在乎。
    • 很容易遗漏依赖项,因为它在 ASP.NET 的内部内部不为您所知,并且您可能不知道自己有问题,因为它很少使用或者您已经具有服务器关联(在 Web 站点中默认启用)

我有点觉得我错过了一些东西,或者我正遭受分析瘫痪的折磨,应该继续努力。

0 投票
2 回答
5264 浏览

c# - 使用 MachineKey 加密不是持久的

我使用该MachineKey.Protect()方法加密在我的 asp.net MVC 应用程序中作为查询字符串传递的 id。

这是我用来加密/解密的代码:

而且,这是我文件中的MachineKey元素:web.config

问题是加密的 id 不是持久的。每次调用该方法时,我都会得到一个新的加密表达式。如何让它持久化?

0 投票
1 回答
2725 浏览

asp.net - System.Web.UI.ViewStateException 无效的视图状态。客户端IP:127.0.0.1 端口:xxxReferer:http:///

我目前遇到一个间歇性问题,用户在这篇文章的标题中收到错误消息:

System.Web.UI.ViewStateException 无效的视图状态。客户端IP:127.0.0.1 端口:xxxReferer:xxx

我终于设法在我们的开发环境中复制了这个,它似乎与在 20 分钟不活动后发回表单有关。

我最初认为是会话超时导致了问题,但显然不是。

我找到了以下帖子:

Viewstate 超时错误

这表明 ViewState 加密密钥具有有限的生命周期,默认情况下在服务器级别设置为:

奇怪的是,这不会同时发生在所有用户身上,所以这不是应用程序池回收。

有谁知道每个用户会话是否生成一个密钥?

我已经设法修复了这个错误,我按照建议添加了一个静态机器密钥配置

在生产环境中这样做安全吗?想要仔细检查,因为该应用程序已经运行了大约 10 年,这是一个全球性的变化,我不愿意在不知道利弊的情况下进行。

提前致谢。

0 投票
2 回答
258 浏览

asp.net - Web 场或集群 SQL 中的 Web 表单

我有以下错误:

然后我按照那个链接找出问题所在。基于该链接,该问题的第一个解决方案是创建显式元素。从 PowerShell 生成哪个更好。我正在尝试从 windows powershell 运行脚本,但不知道将脚本复制并粘贴到 powershell 屏幕后结果在哪里。

有一些解决方案可以修复此错误消息。我有两个问题:
1. 从 Powershell 生成的 machineKey 在哪里?我找不到结果。
2.有人知道如何解决这个错误吗?

谢谢你。

0 投票
1 回答
954 浏览

c# - .Net 4.5.2 升级后尝试解密数据时出现 HttpException

我有一个 REST 服务(C#/IIS),其中少量数据使用以下方法加密:

加密的字符串稍后会发布(到 REST 服务)并使用以下方法解码:

MachineKey 是自动生成的,如 web.config 所示:

系统从.Net 4.5.1升级到4.5.2后,我无法再解密升级前加密的字符串;它给出了一个 HttpException“无法验证数据”。(我可以解密升级后加密的字符串。)

所以在 4.5.1 和 4.5.2 之间发生了一些变化,使得它们不兼容的算法。我无法在网上找到有关此特定问题的任何信息。有没有人有关于这个问题的具体细节和/或使其工作的解决方法?

如果重要的话,该项目的目标是.Net 4.0,而不是 4.5 或 4.5.1 或 4.5.2。

(顺便说一句,听起来不建议将 MachineKey.Encode/Decode 用于短期加密以外的任何事情,可能是因为这类问题?另外,我知道 Encode/Decode 现在已弃用,但我已有系统,此时无法更改。)

更新

只有当键是自动生成时,这才是问题。如果我给他们明确的值,升级后一切都会继续正常工作。

0 投票
1 回答
1650 浏览

asp.net - 如何导出自动生成的机器密钥

我一直在使用 owin oauth 不记名令牌进行 web.api 身份验证。我只有一个服务器。我从来不需要自定义生成机器密钥。现在,我需要转移到负载均衡器后面的网络场。我不希望我当前用户的不记名令牌在我搬到农场时变得无效。如何导出自动生成的机器密钥并导入到另一台服务器?

0 投票
1 回答
879 浏览

asp.net - Sitecore 内容编辑器在以特定语言打开特定项目时中断

我在实时 Sitecore 实例中遇到了这个奇怪的错误。

它是多语言,英语和法语。它有超过一千个内容项。

有两个项目(这是我们迄今为止发现的)我遇到了这个问题。

我能够以英文版打开该项目,但是当我尝试将语言切换为法语时,什么也没有发生。如果我选择任何其他项目,切换到法语,然后尝试打开这个有问题的项目,内容编辑器会中断并停止响应。

这个错误被记录在 Sitecore 的日志中:

有人对正在发生的事情或我可能会尝试解决的问题提出建议吗?

使用 Fiddler,我还看到 POST 和 RESPONSE 都可以,就像任何其他语言切换项目一样。

还尝试使用“原始值”,但它仍然破坏了我的内容编辑器。

非常感谢任何帮助,tks

0 投票
1 回答
474 浏览

asp.net - 如何加密敏感的 web.config appSettings

  • 我知道我可以加密我的 web.config 部分以保护敏感数据。
  • 我知道机器密钥用于加密/解密部分。
  • 我知道我在一个网络场中托管,所以我的机器密钥需要是粘性的。

但我认为我没有抓住重点。如果我将机器密钥放在 web.config 中,并将加密部分放在 web.config 中,那么这如何安全?当然,这充其量只是混淆?

我的场景:
我们正在构建托管在云中、内部开发和管理的 Web 应用程序。需要保护敏感密钥的原因是我们有允许使用第三方工具(例如 ESP、云存储等)的设置。这些在 web.release.config 转换中公开可见,开发人员可以自由连接到产品服务,从而打开风险元素。

如果你能填补我逻辑上的空白,那就太好了。但我真正追求的是针对我的问题的最佳实践解决方案的建议。

我会根据要求添加更多信息。

0 投票
1 回答
650 浏览

asp.net - enableViewStateMac 错误

我的网站托管在带有 IIS 8.0 的 Windows 2012 VPS 上,它是一个 WebFarm 集群托管,所以我从我的 IIS 机器密钥选项生成唯一机器密钥并将其放置到我的 web.cofig 文件中以避免 MAC 错误。我的网站在 .Net 4.5 框架上运行。

这是我的 Web 配置详细信息:

但在运行时,它显示以下错误提示: 在此处输入图像描述

任何人都可以解决这个问题。谢谢