问题标签 [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 投票
1 回答
4248 浏览

asp.net - 验证视图状态 MAC 失败错误。

我用一些 ASPX-C# 页面构建了一个网站,我添加了一个带有表单的新页面。问题是当我单击提交时,我收到以下错误:

视图状态 MAC 验证失败。如果此应用程序由 Web Farm 或集群托管,请确保配置指定相同的 validationKey 和验证算法。AutoGenerate 不能在集群中使用。

所有其他页面中的表单都可以正常工作,但是在此特定页面中提交后 - 表单无法正常工作,并且所有表单都出现此错误。我试图在网上搜索解决方案,但我找到的解决方案似乎不起作用。:(

更新 我把这段代码放在网页配置页面中,问题解决了:

但是PostBack 命令现在不能正常工作。

我的问题是为什么,我该如何解决?

请帮助我,我必须尽快解决这个问题。

0 投票
3 回答
1357 浏览

asp.net - Web-farm 中的 Viewstate 验证失败 - 消除了通常的嫌疑人

我认为我已经尝试了对这个问题的所有标准响应,并且我知道我已经阅读了数百个关于这个问题的问题和帖子,但他们似乎都没有解决它或阐明原因在我的场景中。(我已经下降了 5 个小时,而且没有更近的时间了 :-( )

  • 我有一个由 2 台服务器组成的网络农场。

  • 我已经在两台机器上的 machine.config 中设置了机器密钥和验证密钥

  • 加密:SHA1,解密:AES - 这些是默认值,可以更改它们吗?

  • 我已验证链中没有其他配置文件(web.cfg、apphost 等)具有这些值的设置。

  • 我已经向站点添加了一个页面(基于此 SO),该页面将机器键值吐回,并验证它们在对两台机器的请求中是相同的,并且与机器 .config 中的值匹配

  • 服务器端会话状态处于共享状态服务器,我已经验证 sessionid 在对 2 个服务器的请求之间保持不变。

  • 我已验证页面已完全加载,并且 __EVENTVALIDATION 隐藏字段已在开始发布之前呈现到页面中。视图状态大小在 7.64kb 时还不错

当页面从对服务器 1 的请求呈现,然后再发回服务器 2 时,我会感到害怕......

帖子是由一个标准的、纯粹的 asp 链接按钮触发的,页面上没有 ajax。

任何和所有的帮助将不胜感激。

设置 enableViewStateMAC = false 不是解决方案:-)

0 投票
2 回答
664 浏览

asp.net - 子域中的 MachineKey 关系。可以跨服务器吗?

在这个例子中,我有几个站点。

  • a.site.com
  • b.site.com
  • c.site.com
  • 上述每个站点都具有相同的相同点machinekey。此示例 a.site.com 和 b.site.com 也存在于服务器 1 上,而 c.site.com 存在于服务器 2 上。

    使用表单身份验证,我可以毫无问题地在 a.site.com 和 b.site.com 之间导航,只需验证一次。但是,即使 c.site.com 具有相同的内容,machinekey我也无法导航到 c.site.com 并保持登录状态。

    我可以使用域 cookie 来解决这个问题。但这不是理想的解决方案,原因有很多。

    如何在没有域 cookie 的情况下跨服务器使用机器密钥?

    它们在同一个域中。这些站点也是完全相同的代码,只是多个 IIS 页面。唯一的区别是站点位于不同的服务器上

    谢谢!

    编辑 web.config

    我的意思是我去发布 a.site.com - server1 : publsh b.site.com -server1 : publish - c.site.com server2 代码没有变化。是的,我删除了密钥,但我确信密钥已正确创建。

    0 投票
    1 回答
    3278 浏览

    encryption - 使用 3DES 验证机器密钥

    使用 3DES 验证的验证密钥和解密密钥时,我在以下机器密钥上收到错误。当我删除两者时它可以工作。使用 3DES 时最好的方法是什么?

    0 投票
    1 回答
    602 浏览

    asp.net - 自动生成机器密钥 VS。自定义机器密钥

    我们在服务器上进行了负载平衡,如您所知,我们收到 Mac 失败错误,经过一番搜索,我们发现在所有服务器中使用自定义机器密钥而不是自动生成配置,

    所以问题是有什么区别?

    当我们使用自定义(修复)机器密钥时是否存在任何安全风险?

    0 投票
    1 回答
    287 浏览

    asp.net-mvc - 在 Asp.net MVC 应用程序中使用 SSL 而不是验证密钥的差异

    对于每个 Asp.net MVC 应用程序,我们使用静态或动态密钥来验证用户请求/响应,例如在 web.config 文件中,由于具有静态验证,我们可能会使用它:

    另一方面,我们有一个名为 SSL(安全套接字层)的工具来升级 Web 应用程序的安全性。SSL 也有不可否认机制。

    考虑到这一点,我的问题是:

    它们之间存在哪些差异?什么类型的工作与他们相关?每个将保护 App 的哪一部分?换句话说:我们能否通过使用 MVC ValidationKey 而不是 SSL 对我们的应用程序充满信心?

    令我困惑的概念是:它们同时具有 Encryption/Decryption

    0 投票
    3 回答
    8043 浏览

    c# - ASP.NET 机器键在代码中设置键

    对于 IIS 托管的 ASP.NET MVC 4 网站,我想在运行时在代码中动态调整机器密钥。

    机器密钥、加密和验证密钥以及要使用的算法都存储在数据库中。我不想从文件中读取值web.config,而是想在应用程序启动期间注入这些值并让系统使用这些值。

    有什么方法可以实现这一点而无需进行任何更改web.config(仅更改内存配置)?

    我已经尝试访问配置部分,但它被标记为只读并且也是密封的,所以我无法覆盖IsReadOnly(). 但是,setter对我来说,有一个指标表明可能有一种方法可以删除只读标志。

    有没有办法做到这一点?我能看到的唯一选择是使用像 AppHarbor 这样的自定义方法,但是如果可能的话,我宁愿坚持使用内置方法。

    如果有人问我为什么要这样做,原因是,这是针对在 webfarm 中运行的大量相同网站。因此,必须拥有非自动生成的密钥(必须在每台服务器上相同)。此外,每个网站都应该被隔离,并且不应该共享相同的密钥。由于所有网站在物理表示上都是相同的,因此它们共享相同的物理位置。这就是 web.config 文件不能包含应用程序特定设置的原因。

    编辑:如果根本不可能,至少确认一下会很有帮助。如前所述,可以使用自定义身份验证和加密方法,这将完全避免使用机器密钥设置。谢谢。

    0 投票
    1 回答
    738 浏览

    azure - 使用 Azure 自动缩放是否需要在 web.config 中指定 MachineKey?

    对于我最近处理的一个 ASP.NET MVC 项目,它被部署到多个服务器实例,并且需要配置一个机器密钥。

    我有另一个项目将部署到 Azure(网站标准)上,我不确定 Azure 是否为您配置机器密钥或在内部自行处理此类事情,或者您是否必须配置一个。

    有人知道吗。我似乎找不到任何专门关于此的资源。

    0 投票
    1 回答
    1094 浏览

    iis - 为了设置网站的机器密钥,如何在 C# 中使用 HMACSHA256 生成加密密钥

    我尝试生成机器密钥来手动更新 web.config,但我需要 powershell 脚本来做同样的事情。谁可以帮我这个事?

    在此处输入图像描述

    0 投票
    2 回答
    7931 浏览

    c# - 机器密钥设置为 SHA1 时无法验证数据错误

    我有一个使用 IIS 7.5 中的 .NET 2.0 运行时的简单 .net 应用程序,其中我已将 web.config 中的机器密钥更改为使用以下内容:

    这在本地工作正常,但是当我发布到服务器时,每当浏览网站时都会收到“HttpException(0x80004005):无法验证数据”。我确保设置编译调试 =“假”。将验证方法设置为 3DES 可消除此问题,但我们需要使用 SHA1。我在这里缺少一些配置选项吗?请参阅下面的堆栈跟踪。