问题标签 [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 回答
169 浏览

c# - 这是索引属性,是的还是nea?

我正在尝试获取用于加密/解密我的 ViewState 等的当前 machineKey,以尝试调试另一个问题。(我的应用程序位于服务器场中,并且在每个服务器和应用程序的 machine.config 和 web.config 中设置了机器密钥,因此试图调试某些资源未正确解密的问题。我正在尝试看看哪个用于加密。)这是我的代码片段:

照原样,第 3 行抛出“未设置对象实例的对象引用”。这意味着我可能没有正确设置第二个空参数(属性必须被索引,对吗?)。

但是 machineKey 的 ValidationKey 属性的 ParameterInfo 返回的长度为零(所以该属性没有被索引,对吧?)。

http://msdn.microsoft.com/en-us/library/b05d59ty(v=VS.90).aspx

很明显,我在这里忽略了一些东西,并且希望有第二双眼睛来看看这个。有什么建议么?

0 投票
1 回答
547 浏览

viewstate - 视图状态 MAC 验证失败

有人可以帮我解决这个错误。它通常发生在应用程序空闲或会话到期时。

谢谢

0 投票
1 回答
696 浏览

asp.net - 在 ASP.NET 中获取“填充无效且无法删除”

我最近在我的产品日志中经常看到这个错误。我已经在网上搜索过这个错误。我看到了一些这样笔记,这个这个。所有这些的底线是我应该设置 machineKey。但是我已经设置了 machineKey!像那样:

我也在网络农场服务器上,我的应用程序在 asp.net 3.5 上。

我对这个问题很绝望=\我该如何解决这个问题?

谢谢。

编辑:

这是完整的日志:

0 投票
3 回答
5116 浏览

asp.net - asp.net viewstate 加密问题

我试图打开视图状态加密始终作为我在 IIS6 中托管的 ASP.NET 3.5 网站的安全措施。我们关闭了视图状态,但仍然在此字符串中看到一些“控制状态”。在测试环境中,我可以简单地在 web.config 中设置以下内容,并且我无法再将视图状态通过 base64 解码为半明文:

<pages enableViewState="false" enableViewStateMac="true" viewStateEncryptionMode="Always">

我什至在 machine.config 中添加了以下内容(由机器密钥生成器生成),并且仍然在我的测试服务器上很好地加密了视图状态:

<machineKey validationKey="002..." decryptionKey="D90E..." validation="SHA1" decryption="AES" />

我的非测试环境似乎没有接受上述更改,因为我总是可以使用上述设置将视图状态 base64 解码为纯文本。在我进行任何更改后,我总是 iisreset。

关于我的非测试网络服务器的一些信息:

  • 网络场/负载平衡(但目前只有一台服务器可供测试)
  • Sql 会话状态(最初需要 machine.config 中的 machinekey 来设置它)
  • machine.config:部署零售=“真”

谁能建议在哪里寻找可能会干扰 asp.net viewstate 加密的其他设置?

编辑:现在在我的 iis 测试服务器上,我无法撤消 viewStateEncryptionMode 设置,因为它正在加密视图状态,即使我将其设置为“从不”并且我的其他网站似乎都没有使用此设置。我在哪里可以查看该属性被覆盖的位置?除了当我 iisreset/stop www service/touch machine.config 执行的操作之外,是否还有需要清除此设置的缓存?

编辑最后:经过几天的研究配置文件,我放弃并通过代码实现了这个。我已经有一个附加到页面事件的安全模块,所以在 Page_Load 我添加了: Page.RegisterRequiresViewStateEncryption();

我真的很想知道是什么阻止了这个设置在 IIS6 上立即被选中。当我在本地运行 cassini 时,如果我通过页面节点将 viewStateEncryptionMode 设置为“始终”,我会立即看到它对视图状态进行编码并使用 id="__VIEWSTATEENCRYPTED" 呈现附加隐藏字段。当我将其设置为“从不”时,我会立即看到加密关闭。如果我在我的 IIS6 托管网站上对网站进行完全相同的更改,它不会立即生效,但如果我允许设置保留在那里,它最终会生效。我会停止/启动 www 服务,重置 iis,清除 ASPNET 临时缓存,但我不这样做 不知道还能尝试什么?希望这篇文章可以腐烂一段时间,将来有人会看到我经历过的相同行为,我们可以进一步解决这个问题!

0 投票
1 回答
1469 浏览

asp.net-mvc - AntiForgeryToken 和 MachineKey 配置

我正在尝试将 .NET MVC 应用程序部署到 GoDaddy 服务器。我的一个页面上有一个 Html.AntiForgeryToken ,导致每次点击它都会引发异常。

我使用以下 URL 生成了机器密钥

并将页面 viewStateEncryptionMode 设置为“始终”

但是,我仍然收到错误消息,并且不知道下一步该做什么。任何建议将不胜感激。

0 投票
1 回答
2604 浏览

asp.net - ASP.NET 中的自动机器密钥生成

默认情况下,机器密钥设置是自动生成和每个应用程序(AutoGenerate,IsolateApps)。MSDN 声明解密密钥和验证密钥基于 Web 应用程序 ID。我在我的 IIS 7 服务器上托管了两个 ASP.NET MVC 2 站点,但发现机器密钥是相同的。我通过使用反射查看 ValidationKeyInternal 和 DecryptionKeyInternal 属性来验证这一点。我还通过在一个站点上生成一个防伪令牌 cookie 并将其传递给另一个站点来测试它,并且可以读取该 cookie。

经过反复试验,我发现如果应用程序池标识更改,密钥也会更改。这两个站点具有相同的密钥,因为它们在网络服务凭据下运行。一旦我更改了一个站点的应用程序池标识,它们就会开始具有不同的验证/加密密钥。

但是,在我将这两个站点部署到另一台服务器后,即使更改了应用程序池标识,我也总是获得相同的机器密钥。两台服务器具有相同的硬件和软件配置。

我想知道在 AutoGenerate,IsolateApps 设置下是否有关于如何生成机器密钥的实际逻辑的参考。在网络上,有很多文章在谈论在网络农场场景中设置相同的机器密钥。但是我在对面遇到了一个问题。每个 Web 应用程序的自动密钥生成似乎无法正常工作。有没有人以前有同样的问题?

0 投票
1 回答
625 浏览

visual-studio - Visual Studio SharePoint 解决方案覆盖 machineKey

正是它在锡上所说的 - 每当我在 SharePoint 2010 解决方案中进行更改导致 web.config 被 Visual Studio 更新时,它都会更改元素

防止登录。必须是我指定的键。

帮助!

0 投票
1 回答
594 浏览

asp.net - 在服务器、站点和应用级别设置validationKey

我们的生产环境有三台负载均衡的服务器。在每台服务器上,IIS 中有九个站点。在每个站点中,有 1 到 15 个不同的应用程序。

为了在所有三台服务器上保持正确的加密/解密,应为相应的应用程序使用相同的validationKey 和decryptionKey。这可以设置为三个级别: - machine.config 中的服务器级别 - web.config 中的站点级别 - web.config 中的应用级别

在每个级别上设置它显然都有优点和缺点,但我想知道是否有人可以给出一些具体的理由来在服务器、站点和应用程序中这样做。

在 machineKey Web Farm Deployment Considerations部分,有一个简介

如果要将您的应用程序与同一服务器上的其他应用程序隔离开来,请将服务器场中每台服务器上每个应用程序的 Web.config 文件放置在该文件中。

validationKey 是否是一个足够大的威胁向量,足以证明在三台服务器上约 100 个不同的应用程序上使用不同的密钥是合理的?我知道我知道。我愿意承担多大的风险?我在哪个行业?我希望别人用我的数据做什么?等等

当然,我怀疑最终我们会将其放在所有三个级别上,以确保在添加新网站或应用程序时全面覆盖我们的基础。但我并不真正期待回归测试工作。

谢谢,马特

0 投票
1 回答
3374 浏览

asp.net - FormsAuthentication 中使用 machineKey/validationKey 的位置在哪里?

MSDN:机器密钥

配置算法和密钥以用于表单身份验证数据和视图状态数据的加密、解密和验证,以及进程外会话状态识别

具体来说,FormsAuthentication 中的哪些方法使用了 validationKey 和 encryptionKey 值?

0 投票
1 回答
2145 浏览

.net - 加密 - 机器密钥

我试图找出一种使用 C# 为我的 Web 应用程序加密数据库中几个字段的安全方法。

我需要找到一个执行加密/解密的脚本和一种存储密钥的方法。我读到你可以使用机器钥匙作为钥匙,对吗?

有自动生成和非自动生成的机器密钥。我想我宁愿使用非自动生成的,因为这样可以很容易地将我的 Web 应用程序部署到不同的服务器中。我找到了这个工具,它为你生成了一个:

http://aspnetresources.com/tools/machineKey

什么加密/解密脚本可以使用这个机器密钥?

我还想知道,将非自动生成的机器密钥存储在 web.config 文件中有多安全?如果有人可以看到 web.config 文件,为什么在 appSettings 中使用 machinekey 而不是“普通”键?