【问题标题】:What strategy for encrypting web.config sections should I use?我应该使用什么加密 web.config 部分的策略?
【发布时间】:2013-06-12 16:51:53
【问题描述】:

我想为 web.config 的某些部分添加自动加密,并满足以下要求:

  1. 应该在每次启动应用程序时自动完成(我不想在每次配置编辑后使用 aspnet_regiis 手动完成)
  2. 它应该只在生产环境中自动发生(我需要在我的机器上查看我的值)

找到它的代码不是问题,我的问题是把它放在哪里以及如何确保它不在我的本地主机上执行? 我试图把它放到 Global.asax 但我在那里得到Request is not available in this context 异常。

谢谢。

【问题讨论】:

  • Web.config 用于确定应执行的 .Net 版本等 - 因此您无法加密 整个 文件并从内部解密。网络到那时为时已晚。加密文件的某些部分完全是另一回事......
  • 在应用程序启动后加密值听起来是非常有趣的安全方法...为什么不一直保持纯文本呢?
  • 如果您已经在生产服务器上拥有明文,那么稍后对其进行加密并没有什么好处。
  • @Basic,我不想加密所有文件,我的意思是部分,抱歉不明显。
  • 我相信这个误解是问题说你想加密而不是解密。如果你正在加密,你的服务器上已经有明文了。

标签: c# .net asp.net-mvc encryption web-config


【解决方案1】:

我建议将此设置为部署过程的一部分。

每次应用程序启动时都调用加密不是一个好主意,因为 ASP.Net 应用程序池会不时自行回收,这可能会导致问题。

根据您的部署过程,您可以通过批处理文件、powershell 脚本来完成,但它需要在您的生产机器上运行。

【讨论】:

  • 相信 OP意味着每次应用启动时都应该解密 web.config(似乎更有意义)
  • 如果您使用 aspnet_regiis 提供的基本 web.config 加密模型,它会在需要从中提取值时自动解密 web.config。但是,如果我们谈论的是整个 web.config,那可能会有点不同。
  • @Dillie-O 我有什么问题?我知道 machineKey,我将使用永久的。我不想加密整个文件,我更新了问题。如果我可以添加那 5 行代码,我不想每次都手动执行它。
  • 您是在尝试加密整个 web.config 还是仅加密部分。连接字符串和 appsettings 应该可以正常运行。我不熟悉加密整个文件的其他方法。
  • 部分不是整个文件,我在之前的评论中提到过并更新了问题。
猜你喜欢
  • 2012-08-31
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
相关资源
最近更新 更多