如何使用反编译器从精明的用户隐藏硬编码的用户名和密码?

时间:2012-03-03 18:02:42

标签: c# obfuscation decompiling dotfuscator

我想创建一个简单的C#应用​​程序,将文本文件上传到我的Web服务器。但要做到这一点,我需要在代码中包含我的用户名和密码。我尝试使用Visual Studio中包含的混淆器,但在使用免费反编译器反编译后,我仍然可以找到它们。

这可能吗?

谢谢!

7 个答案:

答案 0 :(得分:4)

也许你需要重新考虑这里的基本原理

  1. 您可以永远保护攻击者可以实际访问
  2. 的平台
  3. 您希望实现一种情况,即您的用户可以在自己的平台上向您的服务器提交文本文件,但只能使用您的应用程序。即使使用SSL,这也很棘手,因为它们始终可以监控HTTP通信
  4. 您可以从不信任来自互联网的任何内容。是的,它也包含您的文本文件。
  5. 您应该做的是配置服务器,以便无论发送给它的是什么,它都不会影响您的业务案例。

    您使用的是哪个用户名/密码?

答案 1 :(得分:3)

这样说 - 如果用户名和密码位于用户的计算机上,并且某些程序必须在某些时候以未加密的形式对该数据进行操作,那么从逻辑上讲,它无法保证它们无法查看。所以答案是否定的。这在逻辑上是不可能的。

也许您可以在Web服务器上创建一个具有非常有限权限的单独用户并使用它?然后,您可以更少地担心用户是否能够从您的应用程序中检索凭据。

答案 2 :(得分:2)

没有

阻止用户反编译代码并在其中看到所有的唯一方法是不向他们提供代码,即将代码放在服务器上(在您的控制之下)而不是客户。

考虑编写一些服务器端(WCF端点,REST服务或类似的东西),让他们通过类似HTTP POST的内容发送内容,而无需身份验证。然后没有密码可以破解,但是你的服务器端代码可以完全控制发送内容的内容。

答案 3 :(得分:1)

没有。你可以对它们进行加密,但是你需要从某个地方获得一个解密密钥,并且有可能确定的人能够反编译代码并找出密钥的位置。

我想您可能会有一个返回一次性用户名和密码的Web请求..因此您的应用程序会调用它,获取user / pwd并使用它来上传。使用后,您需要一种方法来禁用/删除该帐户。

更多细节可能会导致一个更有可能适合您的答案,因为我的解决方案可能对您的顾虑太多了。

答案 4 :(得分:1)

是否需要在源代码中?如果只需要在您登录时在计算机上运行,​​则可以将密码存储在文件中并使用文件权限进行保护。

答案 5 :(得分:1)

您在谈论什么样的访问? 如果需要用户和密码进行上传,那么最终可以使用代理/网络侦听工具在代码中访问它,甚至更容易。 是否可以为您的应用程序创建一个只具有上传功能的特定用户(不读取任何其他文件等)?

答案 6 :(得分:1)

您无法依赖代码来安全地存储凭据。您应该考虑将用户名和密码作为参数传递给您的程序,并依赖于相应的操作系统安全性(例如Windows安全性)来阻止用户访问它们。

如果您处于无法控制Windows凭据的环境中,则应考虑通过SSL等安全连接进行服务器端授权。