【问题标题】:How to encrypt connection string without app.config如何在没有 app.config 的情况下加密连接字符串
【发布时间】:2011-05-18 01:02:47
【问题描述】:

假设 app.config 无论出于何种原因都不是一个选项。

如何在程序集本身或另一个 app.config(如 XML 文件)中存储加密的连接字符串?

(我认为这并不重要,但这是针对 Excel 2003 的 COM 加载项。)

【问题讨论】:

  • 这是一个winform应用程序吗?? Web应用程序??还是?
  • @Hansmukh:Excel 2003 的 COM 插件。

标签: encryption app-config connection-string


【解决方案1】:

这可以很好地应用隔离存储。

http://msdn.microsoft.com/en-us/library/3ak841sy(VS.80).aspx

【讨论】:

    【解决方案2】:

    您可以使用 System.Security.Cryptography 命名空间中的类来 加密/解密文件。但是,您遇到了另一个问题,将在哪里 你存储密钥?如果将其存储在程序集中,则程序集可以 浏览找到密钥,然后其他人可以使用它来解密您的 数据。

    去看看

    http://www.codeproject.com/KB/security/encryptstrings.aspx

    http://sharpertutorials.com/simple-string-encryption-and-decryption/

    【讨论】:

    • 对,一个主要问题是弄清楚如何保护密钥。
    • 我不会说一个大问题,我会说一个不可能的问题。如果您的程序集拥有密钥,则攻击者拥有密钥。您可以使它变得困难,但这只是“通过默默无闻的安全性”,它并没有加密太多来保护连接字符串,而是您可能将密钥隐藏得足够好,以至于对于攻击者来说不值得。如果值得……他们会找到钥匙的。
    【解决方案3】:

    听起来对 ProtectedData 类很有用。

    http://msdn.microsoft.com/en-us/library/system.security.cryptography.protecteddata.aspx

    调用 Protect 并传入包含连接字符串的字节数组将返回加密数据的字节数组(然后可以将其转换为 base64 并存储在本地文件中。

    调用 Unprotect 并传入一个包含加密连接字符串的字节数组将返回一个包含明文连接字符串的字节数组。然后只需使用 Convert to ASCII 或 UTF-8 等。

    显然,如果攻击者获得对运行应用程序的用户帐户的访问权限,他们将能够恢复字符串,但它比在程序集中存储加密字符串提供了更多的安全性(这可以在不访问用户帐户的情况下允许恢复)。

    【讨论】:

      猜你喜欢
      • 2016-02-10
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 2021-02-09
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多