【问题标题】:how to secure dll methods如何保护 dll 方法
【发布时间】:2013-01-02 11:52:01
【问题描述】:

我有一个用于加密和解密数据库密码的课程。我在配置中有一个密钥,在我的代码中有一个盐。

如果有人可以访问 dll 和数据库,那么他可以通过将 dll 导入他的应用程序来解密我的数据。

有什么东西可以保护dll之外的调用方法

【问题讨论】:

  • 您必须散列您的密码。这样,就不可能解密它们。
  • 您的攻击者可以简单地反编译 DLL 并提取密钥。您应该将密钥存储在环境中的安全存储位置。
  • @SLaks 您通常不能将密码的哈希值发送到数据库以进行身份​​验证。
  • @StefanH,现在对我来说,问题似乎并不像 OP 试图加密该数据库的连接字符串,而是在数据库中存储一些秘密信息(密码)。同样在重新阅读问题后,您的解释也是可能的。
  • @AlexeiLevenkov - 你是对的,OP 使用的精确工作流程并不像我最初想象的那样清晰。我绝对同意 SLaks,因为如果存储的密码不需要验证应用程序,那么它们应该被散列,而不是以加密状态存储。我明确阅读了这个问题,因为 OP 担心存储用于启动连接的凭据。

标签: c# visual-studio-2010 security assemblies


【解决方案1】:

理想情况下,您不应在代码中存储密码,因为反编译相当容易。

最好的选择是将此信息存储在安全位置,理想情况下仅存储信息的哈希值。

话虽如此,您可以采取多种措施来保护自己。

一种选择是混淆,但这仍然只会使发现您的信息变得更加困难,但并非不可能。一些混淆器比其他混淆器更好,并且会“破坏”大多数反编译工具。话虽如此,只要计算机能搞定,有才华的人也能搞定。

【讨论】:

    【解决方案2】:

    我衷心推荐使用 DPAPI 来加密您的应用程序或 web.config。这将有助于确保解密该配置的唯一方法是在您的环境中这样做,简单的文件访问是不够的。

    http://msdn.microsoft.com/en-us/library/ms995355.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多