代码之家  ›  专栏  ›  技术社区  ›  David

我如何隐藏我的.NET可执行文件中的细节?

  •  1
  • David  · 技术社区  · 15 年前

    如果我在.net中有一个简单的crud应用程序可执行文件,是什么阻止用户将其加载到redgate reflector并查看所有内容,包括db连接字符串、密码等?

    我能以任何方式保护它吗?

    7 回复  |  直到 13 年前
        1
  •  3
  •   Andrew Hare    15 年前

    不,你能做的最好的是混淆程序,使它更难阅读和理解,但除此之外,没有办法阻止某人使用反射器或ILDASM来查看你的程序集中的IL。

    请记住CLR也需要能够读取这个程序集,所以如果CLR可以读取程序集,其他任何人也可以。

        2
  •  2
  •   BoltBait    15 年前

    混淆永远不是正确的答案。也许你走错了路。

    有几种方法可以让连接字符串既不可用也不重要。

    您可以将数据库放在web服务后面,以便web服务只知道到数据库的连接字符串。当然,您需要另一种方法来限制对web服务的访问,例如使用登录凭据。

    或者,您可以给每个用户自己的sql登录名/密码。这样,他们可以知道自己的用户id/密码,但从数据库中“关闭”它很容易。这也使您可以更好地控制每个人对数据库本身的访问…比如他们可以访问哪些表/视图,以及访问的类型。

        3
  •  1
  •   Zian Choy    15 年前

    您可以很难做到这一点(混淆,字符串加密等),但它永远不可能逆向工程,只要用户有权访问可执行文件。

        4
  •  1
  •   ChrisW    15 年前

    包括数据库连接字符串、密码

    定义数据库引擎中的安全性:限制用户,限制用户可以连接的机器,限制用户可以做什么,和/或指定用户只能通过定义的“存储过程”与数据库交互。

        5
  •  1
  •   gbn    15 年前

    这取决于你想保护什么。

    如果是带密码的数据库连接字符串,则不要存储它们,例如:设置IIS应用程序池以运行有限的服务帐户以连接到数据库和受信任的安全性。假设有良好的数据库安全性,那么对服务器名等的了解是无用的。

        6
  •  1
  •   Ion    13 年前

    你可以把你的密码和连接字符串放在一个哈希表或XML中,然后加密你的数据,在一个隐藏在文本文件中隐藏的密码中隐藏一个隐藏在图像后面的速记文件。所有的解压和读取都会在读取后进入内存,释放内存,刷新内存,调用收集器,使用连接字符串并填充干净变量。只把你需要的数据保存在内存中,小心使用RAM。

        7
  •  0
  •   Juri    15 年前

    Obfuscation 是个选择。但我想你不能完全隐藏密码字符串。那真的很不安全。