如何使用反编译器向精明的用户隐藏硬编码的用户名和密码
本文关键字:用户 编码 密码 隐藏 何使用 反编译器 | 更新日期: 2023-09-27 18:26:47
我想创建一个简单的C#应用程序,将文本文件上传到我的web服务器。但要做到这一点,我需要在代码中包含我的用户名和密码。我试过使用Visual Studio中包含的模糊处理程序,但在使用免费的反编译器进行反编译后,我仍然能够找到它们。
这可能吗?
谢谢!
也许你需要重新思考这里的基本原理
- 您可以永远保护攻击者可以物理访问的平台
- 您希望实现这样一种情况,即您的用户可以在自己的平台上向您的服务器提交文本文件,但只能使用您的
- 您可以永远不要信任任何来自互联网的东西。是的,这也包括您的文本文件
相反,您应该做的是配置服务器,这样无论发送给它什么,都不会影响您的业务案例。
你用这个用户名/密码干什么?
这样说吧——如果用户名和密码位于用户的计算机上,并且某些程序在某个时候必须以未加密的形式对这些数据进行操作,那么在逻辑上不可能保证他们无法查看这些数据。所以答案是否定的。这在逻辑上是不可能的。
也许你可以在你的网络服务器上创建一个权限非常有限的单独用户,然后使用它?这样,如果用户能够从您的应用程序中检索凭据,您就不用担心了。
否。
防止用户反编译您的代码并在其中看到所有的唯一方法是不要将您的代码提供给他们,即将代码放在服务器(由您控制)上,而不是客户端上。
考虑编写一些服务器端的东西(WCF端点、REST服务或类似的东西),让他们通过HTTPPOST之类的东西发送内容,而不需要身份验证。然后没有密码可以破解,但您的服务器端代码可以完全控制发送的内容。
否。你可以对它们进行加密,但你需要从某个地方获得解密密钥,很可能有足够的人能够反编译你的代码并找出密钥在哪里
我想你可能会有一个返回一次性用户名和密码的网络请求。。所以您的应用程序会调用它,获取user/pwd并使用它进行上传。一旦使用,您需要一种方法来禁用/删除该帐户。
更多的细节可能会得到一个更适合你的答案,因为也许我的解决方案对你的担忧太多了。
它需要在源代码中吗?如果这只需要在您登录时在您的计算机上运行,您可以将密码存储在文件中,并使用文件权限对其进行保护。
您谈论的是什么类型的访问?如果上传需要用户和密码,那么它最终将可以在代码中访问,使用代理/网络监听工具甚至更容易。是否可以为您的应用程序创建一个只有上传功能(不读取任何其他文件等)的特定用户?
您不能依赖代码来安全可靠地存储凭据。您应该考虑将用户名和密码作为参数传递到程序中,并依靠适当的操作系统安全性(例如windows安全性)来防止用户访问它们。
如果您所处的环境无法控制windows凭据,则应考虑通过SSL等安全连接进行服务器端授权。