【问题标题】:How can i protect my .net application from decompilers?如何保护我的 .net 应用程序免受反编译器的攻击?
【发布时间】:2016-04-28 08:33:40
【问题描述】:

好的,所以我有这个连接到数据库的 C# 应用程序,它具有登录名和所有这些东西,但是如果有人刚刚下载了反编译器,看到我的代码从我的数据库中获取了连接字符串并做了他想做的任何事情怎么办? 我怎样才能保护自己免受伤害?即使我可以保护我的连接字符串,我怎么能保护我的实际代码?

【问题讨论】:

  • 你不能。真的。如果计算机可以执行它,那么计算机就可以正确解释它,因此,人们也可以使用正确的工具。
  • 读取链接的副本......
  • 那么为什么要在.net 中编程呢?为什么微软没有解决这个问题?
  • 或者付钱给离岸公司写代码。它会非常糟糕,即使没有混淆也没有人能够阅读它

标签: c# .net decompiling


【解决方案1】:

出于这个原因,您永远不应该在您的程序集中存储关键信息。有很多方法可以混淆信息,但它们只会延迟不可避免的事情。

记住:默默无闻的安全是不安全的

  • 访问服务器端应用程序上的数据并将其传递给经过身份验证的客户端。
  • 将数据库用户帐户限制为所需的最低权限(如果您只需要读取信息 - 确保它没有写入权限等)

【讨论】:

  • 这个。从问题的内容来看,它似乎是一个直接连接到异地数据库的桌面应用程序。这本身就非常不安全。数据库应使用仅支持调用应用程序允许执行的确切操作的服务。
【解决方案2】:

但是如果有人刚刚下载了一个反编译器,看到我的代码从我的数据库中获取了连接字符串并做了他想做的任何事情怎么办?我该如何保护自己免受这种伤害?

真可惜,不是吗?为此,您只能做几件事:

  • 使用 VPS ($$) 并在线存储代码的登录部分。为此,您可以使用 LiteCode,这是一个教程:https://github.com/debug-hf/LiteCode-Example/
  • 使用混淆器来避免反编译器和黑客查看您的代码。迄今为止最好的是 http://netguard.io 。它包括免费计划,所有高级计划都是完全安全的。你所有的字符串都被加扰、融化、秘密地存储在文件中。著名的反混淆器,De4Dot 这样的反混淆器就算处理了市面上几乎所有的混淆器也处理不了!

希望对你有帮助:) 干杯

【讨论】:

  • 谢谢 m8 我试试看
【解决方案3】:

连接字符串可以在配置文件中加密

Connection Strings and Configuration Files

但是,您无法真正保护您的代码不被希望查看其功能的人看到,您只能通过混淆使其更加困难。

我要补充一点,适当的安全模型可以限制对物理文件和数据库“数据”的访问,但这确实取决于您的部署模型。

【讨论】:

    【解决方案4】:

    您应该将连接字符串存储在 app.config 或 web.config 文件中。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 2012-06-17
    相关资源
    最近更新 更多