【问题标题】:When should I encrypt my config file?我什么时候应该加密我的配置文件?
【发布时间】:2012-07-08 02:07:05
【问题描述】:

我有一个带有 app.config 文件的 C# 应用程序。该应用程序在构建服务器上构建并部署给多个用户。
我想加密 app.config,但我不确定何时这样做:如果我在构建后立即进行,加密不会依赖于构建服务器凭据吗?应用程序如何在其他机器上解密?如果我在用户机器上进行加密,这会不会在 app.config 不受保护时留下时间?

谢谢

编辑:
我正在考虑使用DPAPI。它使用用户的凭据来加密和解密。这就是为什么我认为我在向用户提供加密文件时可能会遇到问题。

【问题讨论】:

  • 您应该在向同一用户提供解密文件的方法时为文件加密而烦恼。听起来你需要在这里的某个地方实现一个服务,以防止代码落入“邪恶”之手。
  • 需要加密的敏感信息不应进入配置文件
  • 但是连接字符串不应该去那里吗?
  • 如果您可以使用集成安全性,您的连接字符串不应包含密码,在这种情况下,我认为加密它没有意义,因为它包含的只是服务器和数据库名称。如果确实包含密码,则对其进行加密是有意义的。
  • 看看这个answer。可以使用 RSA public-private key.encryption 来做到这一点。

标签: c# encryption app-config


【解决方案1】:

我刚刚阅读了您帖子的补充内容,我认为您实际上根本不需要加密...

您说您打算使用基于用户凭据进行加密/解密的系统。这意味着两件事:

  1. 您在构建期间没有加密;你不能在构建过程中使用这种系统,原因你已经注意到了。
  2. 您似乎对有权访问数据的用户感到满意。在这种情况下,您根本不应该使用配置,但您应该提示他们输入登录信息(也许之后安全保存以供重复使用)或仅使用他们的 Windows/域登录。

无论哪种方式,您都不需要加密文件来保护它...您只需将登录信息或其他配置信息存储为用户设置,而不是配置,所有用户都可以阅读。

【讨论】:

  • 从我一直在阅读的内容来看,加密连接字符串是常见的做法,不是吗?我还计划在那里存储多个连接字符串,我不希望用户编辑它们。
  • 这通常是一种毫无意义的做法。如果您试图向用户隐藏信息,请不要这样做。因为它只会对那些不想看的人隐藏它。至于阻止他们编辑它......嗯......加密对那个目标没有任何作用。什么都没有。但是,适当的文件权限可以。 (普通用户应该对程序的安装目录有写权限。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
  • 2020-01-09
  • 1970-01-01
  • 2010-09-07
相关资源
最近更新 更多