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

asp.net - 尽管有 MSDN 变通方法,但散列在 .Net 4.0 中不再有效

我在生产中有一个现有的应用程序,它使用 SqlMembershipProvider 并具有指定的机器密钥:

它目前在 .Net 2.0 AppPool 下运行。

我正在编写一个必须使用现有数据库的新应用程序,我有该数据库的备份。我正在尝试让 SqlMembershipProvider 使用它(它确实如此),但我无法让已知的用户名/密码正常工作。此帐户在 prod 中工作,并且两个数据库(prod 和 mine)上的密码 hash 和 salt 相同。但是,在 SqlMembershipProvider 将数据库中的密码与输入的散列密码进行比较时,它们并不相同。

本文建议在 .Net 4.0 中使用 ASP.Net 中的默认散列算法进行重大更改: http ://www.asp.net/learn/whitepapers/aspnet4/break-changes

但是,我已经按照建议指定了机器密钥。此外,我剥离了 .Net 4.0 组件并将其放回 3.5(即 CLR 2),输入密码的哈希值仍然相同。

此外,我尝试将这个新的临时应用程序重新部署到同一服务器生产上,但它仍然无法登录(尽管我无法验证它是否由于密码哈希不匹配而失败)。

我还能在这里尝试什么?

0 投票
1 回答
2698 浏览

c# - WebResources.axd 或 ScriptResources.axd 是如何实际工作的?

我在哪里可以了解 WebResources.axd 或 ScriptResources.axd 的实际工作原理?

附加到 .axd 的字符串是什么?这个字符串是变化的,还是不变的?它是页面,特定于会话吗?这些文件可以缓存在代理上吗?

它在内部是如何工作的?这在发现 ASP.NET 漏洞之后尤其重要……因为其他人可能不想实现类似的编码错误。

我的理解是加密密钥用于指导它们的操作方式..(机器密钥)但我不知道更多。

0 投票
1 回答
36369 浏览

asp.net - ASP.NET machineKey 配置部分默认位置

我在哪里可以找到machineKeyASP.NET 的配置部分?

我的应用程序Web.config中没有一个,根目录Web.config中没有一个,我的machine.config.

这是否意味着有一些其他默认硬编码到 ASP.NET 中?如果是这样,默认值是什么?(对于 .NET 2 和 4)

阅读此内容:http: //msdn.microsoft.com/en-us/library/w8h3skw9.aspx

我期待在某处找到这样的东西:

编辑: 1.1 文档似乎相当清楚 wrt 默认值: http: //msdn.microsoft.com/en-us/library/w8h3skw9 (VS.71).aspx但 4 文档相当模糊http://msdn.microsoft .com/en-us/library/w8h3skw9.aspx

0 投票
3 回答
155004 浏览

asp.net - 将 machineKey 添加到 web-farm 站点上的 web.config

我们(实际上是我们的 IT 合作伙伴)最近为我们拥有的一个网络农场站点更改了一些 DNS,以便两个生产服务器在它们之间进行循环 DNS 切换。在此切换之前,我们并没有真正遇到WebResource.axd文件问题。自从切换后,当我们点击实时公共 URL 时,我们得到一个错误:

加密异常

填充无效且无法移除。

当我们自己访问特定服务器时,它们加载正常。我已经研究过这个问题,似乎因为他们在两台服务器之间共享资产,我们需要machineKeyweb.config每台服务器上保持一致,以便他们可以在两者之间一致地加密和解密。我的问题是:

  1. 我可以machineKey通过服务器上的工具生成一个,还是需要编写代码来执行此操作?
  2. 我只需要在每台服务器上添加machineKey还是web.config您认为我需要做任何其他事情才能使两台服务器一起工作?(两者web.config目前都没有machineKey
0 投票
1 回答
3967 浏览

machinekey - 事件代码:4005

奇怪的事情正在发生!几天来,我的用户正在经历“注销”问题,错误消息是:

事件代码:4005 事件消息:请求的表单身份验证失败。原因:提供的票证无效。

这里的数据:

  1. 该网站在负载均衡器后面的 3 台服务器上运行
  2. 是的,所有网站上的机器密钥都是相同的,因为配置是共享的,并且所有服务器都指向 NAS 上的同一个文件夹,这是关键:

    /li>
  3. 我按照此处的建议使用控制台应用程序创建了密钥:http: //msdn.microsoft.com/en-us/library/ff649308.aspx#paght000007_webfarmdeploymentconsiderations

  4. 形式身份验证配置是

    /li>
  5. 服务器上的时间是同步的

...还有其他建议吗?

干杯

0 投票
1 回答
1153 浏览

asp.net - ASP.NET MVC 中页面上的简单密码保护

我希望保护 ASP.NET MVC 应用程序中的单个(动态)页面。

我不想使用完整的身份验证系统——我们已经在为站点管理员使用表单身份验证。相反,这是为了让我们可以向特定用户发送带有密码的页面的链接。

我目前处理此问题的方式是,当提交有效密码时,我们会创建一个包含页面 id (Guid) 及其会话 id 的加密 cookie,并将它们重定向到页面。然后在我们的“页面”控制器操作中验证这个 cookie。

所以第一个问题,这是最好的(最安全的)方法(除了使用表单身份验证)吗?

第二个问题,我可以读取 Forms Authentication 使用的机器密钥来执行加密,还是更好地使用 FormsAuthentication 来加密 cookie(我能看到的唯一重载是需要 FormsAuthenticationTicket 的重载)?

因为我们总是在部署之前生成一个新的机器密钥,所以如果我们所有的加密都使用相同的密钥会更好。

[更新]

关于如何访问机器密钥,我在http://rich-rogers.com/archive/asp.net-c-sharp-encrypt-hash-using-machinekey-values找到了答案

[更新 2]

在问了这个问题后,我意识到,由于我需要维护他们可以访问的页面列表,所以我最好将这些页面存储在当前会话中。我可以存储具有到期日期的安全令牌列表。因为我已经有一个会话包装器,所以这也应该很容易进行单元测试。

0 投票
17 回答
168876 浏览

asp.net - 视图状态 MAC 的 Asp.net 验证失败

我在 asp.net 网站上的某些时候收到以下错误。

当页面刷新时,没问题。我该如何解决这个问题?

0 投票
1 回答
389 浏览

asp.net-mvc - 更改机器密钥时 ASPX 匿名 Cookie 被破坏

我的公司最近遇到了流量高峰,因此我们尝试启动额外的 EC2 实例来处理负载。不幸的是,这会导致用户使用 cookie 出现问题(即,即使您提供了凭据,网站仍然要求登录)。我们认为这是因为我们忽略了在 Web.config 文件中设置机器密钥(每台负载平衡机器上的 Web.config 文件在其他方面都是相同的)。

我们现在处于不想在 Web.config 中设置新机器密钥值的位置,因为这将注销我们所有的匿名用户,他们可能已经将商品添加到他们的购物车等。但是我们也想支持缩放。

所以,问题:

  1. 我们的假设是否正确,即机器密钥是用户需要新 cookie 的罪魁祸首?
  2. 有没有办法确定正在使用的当前或默认机器密钥,以便我们可以将其复制到其他负载平衡服务器?
  3. 失败2,有没有办法在不丢失我们匿名用户数据的情况下设置新的机器密钥?
0 投票
0 回答
282 浏览

asp.net-mvc-2 - MVC2 Anti-ForgeryToken 帮助

我已在我的应用程序中的 POST 操作中应用了防伪令牌。当会话超时时,我收到“未提供所需的防伪令牌或无效”错误。我在 web.config 中添加了一个 machineKey,但这并没有解决问题。我需要做些什么来强制令牌使用机器密钥吗?

感谢您对此的任何帮助。

0 投票
1 回答
777 浏览

encryption - 在 SqlMembershipProvider 的 MachineKey 中使用 AES256 作为“解密”

我正在为 SharePoint 2010 网站的基于表单的身份验证创建自定义注册表单,并将密码作为“加密”存储在 aspnet_Membership 数据库表中。

我在 web.config 中的设置显示“解密”参数是“AES”。我的老板要求我使用 AES256,因为它更安全,但我无法弄清楚如何做到这一点。我一直在谷歌搜索和“stackoverflow-ing”,但到目前为止,我还没有找到一篇解释我需要做什么或在哪里寻找好信息的帖子。

我想,我的问题是:

  1. “AES256”是“解密”参数的有效值吗?
  2. 如果没有,是否只是生成更长的“解密密钥”来使 AES 更强大?即,如果我将解密密钥设为 64 个字符长,那会构成 AES256 吗?
  3. 如果我目前的想法完全偏离了基础,谁能让我走上正轨,或者解释(或链接到解释)如何更新我的 web.config 以使用 AES256 而不是默认的 AES?

以防万一有人想说“你应该使用散列”......去过那里,讨论过,决定使用加密。只是以为我会解决这个问题:)