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

标签 asp.net web-config machinekey machine.config

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

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

在每个级别设置它显然有利有弊,但我想知道是否有人可以给出一些具体的理由在服务器、网站和应用程序上进行设置。

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

If you want to isolate your application from other applications on the same server, place the in the Web.config file for each application on each server in the farm.

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

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

谢谢, 马特

最佳答案

部分归结为偏好,主要与个人认为配置文件中的“噪音”有关,但在任一级别(当然是适本地)存储配置在功能上是相同的。

例如,如果您有一些设置在同一服务器上的所有应用程序之间共享,这可能是 machine.config 的一个很好的候选者,而不是在您可能拥有的每个 web.config 中重复它。

在我看来,验证/加密 key 的位置在 web.config 文件中 - 你不想在同一服务器上的多个(尤其是不相关的,从身份验证级别)网络应用程序之间共享这些(明显的安全问题).

在所有可用级别放置相同的设置,“只是为了确保”,是愚蠢的(因为缺少更好的词)。不。您将来(当您离开时)会让一些维护人员感到困惑,额外的东西和“不必要的东西”通常会招致滥用。

关于asp.net - 在服务器、站点和应用级别设置 validationKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7421491/

相关文章:

c# - 如何从 Asp.Net 中的二进制数据加载图像?

c# - 检测/监听服务启动和停止状态变化

asp.net - WebForms 身份验证作为 MVC 过滤器

c# - WCF 跟踪和消息日志记录不会在服务主机(服务器)端写入日志文件

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

C# getCultures 在本地/currentCulture

asp.net - 如果操作不存在,则 ASP MVC 中的后备路由

Angular 通用预渲染导致 301 重定向

c# - 在 ASP.NET 中使用 MachineKey

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