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

C# 如何使用反编译器对精明的用户隐藏硬编码的用户名和密码?,c#,obfuscation,decompiling,dotfuscator,C#,Obfuscation,Decompiling,Dotfuscator,我想创建一个简单的C#应用程序,将文本文件上传到我的web服务器。但要做到这一点,我需要在代码中包含我的用户名和密码。我尝试过使用VisualStudio中包含的模糊器,但在使用免费的反编译器反编译后,我仍然能够找到它们 这可能吗 谢谢 这样说-如果用户名和密码驻留在用户的计算机上,并且某些程序必须在某个时刻以未加密的形式对该数据进行操作,那么从逻辑上讲,无法保证他们无法查看该数据。所以答案是否定的。这在逻辑上是不可能的 也许您可以在web服务器上创建一个具有非常有限权限的单独用户,然后改用它?

我想创建一个简单的C#应用程序,将文本文件上传到我的web服务器。但要做到这一点,我需要在代码中包含我的用户名和密码。我尝试过使用VisualStudio中包含的模糊器,但在使用免费的反编译器反编译后,我仍然能够找到它们

这可能吗


谢谢

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


也许您可以在web服务器上创建一个具有非常有限权限的单独用户,然后改用它?这样,您就不必担心用户是否能够从您的应用程序中检索凭据了。

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


也许您可以在web服务器上创建一个具有非常有限权限的单独用户,然后改用它?这样,您就不必担心用户是否能够从您的应用程序中检索凭据了。

不。您可以对它们进行加密,但您需要从某个地方获取解密密钥,而且可能有足够确定的人能够对您的代码进行反编译并找出该密钥的位置

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


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

不。您可以对它们进行加密,但您需要从某个地方获得解密密钥,而且可能有人有足够的决心能够对您的代码进行反编译并找出密钥所在的位置

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


更多的细节可能会导致一个更适合您的答案,因为我的解决方案可能太多了,无法满足您的需求。

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

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

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

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

也许您需要重新思考这里的基本原理

  • 您可以从不保护攻击者可以物理访问的平台
  • 您希望实现这样一种情况,即您的用户在其自己的平台上可以向您的服务器提交文本文件,但只能使用您的应用程序。即使使用SSL,这也很棘手,因为他们总是可以监视HTTP通信
  • 你永远不能相信任何来自互联网的东西。是的,那也包括你的文本文件
  • 相反,您应该做的是配置服务器,以便无论发送给它的是什么,都不会影响您的业务案例


    您使用该用户名/密码的目的是什么?

    也许您需要重新思考这里的基本原理

  • 您可以从不保护攻击者可以物理访问的平台
  • 您希望实现这样一种情况,即您的用户在其自己的平台上可以向您的服务器提交文本文件,但只能使用您的应用程序。即使使用SSL,这也很棘手,因为他们总是可以监视HTTP通信
  • 你永远不能相信任何来自互联网的东西。是的,那也包括你的文本文件
  • 相反,您应该做的是配置服务器,以便无论发送给它的是什么,都不会影响您的业务案例

    您使用该用户名/密码的目的是什么?

    防止用户对代码进行反编译并查看其中的所有内容的唯一方法是不要将代码提供给他们,即将代码放在服务器(在您的控制下)而不是客户端上

    考虑编写一些服务器端的东西(WCF端点、REST服务或类似的东西),允许他们通过HTTP POST之类的东西发送内容,而不需要身份验证。这样就没有密码可破解,但服务器端代码完全控制发送内容的情况。

    防止用户对代码进行反编译并查看其中的所有内容的唯一方法是不要将代码提供给他们,即将代码放在服务器(在您的控制下)而不是客户端上

    公司