1

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

这可能吗?

谢谢!

4

7 回答 7

4

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

  1. 永远无法保护攻击者可以物理访问的平台
  2. 您想要实现一种情况,即您的用户可以在他们自己的平台上向您的服务器提交文本文件,但只能使用您的应用程序。即使使用 SSL,这也会变得很棘手,因为他们总是可以监控 HTTP 通信
  3. 永远不能相信来自互联网的任何东西。是的,这也包括您的文本文件。

相反,您应该做的是配置服务器,以便无论向它发送什么,它都不会影响您的业务案例。

你用那个用户名/密码做什么?

于 2012-03-03T18:10:01.060 回答
3

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

也许您可以在您的网络服务器上创建一个具有非常有限权限的单独用户并使用它来代替?这样您就不必担心用户是否能够从您的应用程序中检索凭据。

于 2012-03-03T18:08:30.650 回答
2

不。

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

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

于 2012-03-03T18:10:26.920 回答
1

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

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

更多细节可能会导致更可能为您工作的答案,因为我的解决方案可能对您的担忧来说太多了。

于 2012-03-03T18:09:05.057 回答
1

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

于 2012-03-03T18:09:05.880 回答
1

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

于 2012-03-03T18:09:22.117 回答
1

您不能依靠代码来安全可靠地存储凭据。您应该考虑将用户名和密码作为参数传递到您的程序中,并依靠适当的操作系统安全性(例如 Windows 安全性)来阻止用户访问它们。

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

于 2012-03-03T18:11:28.283 回答