如何隐藏我的服务器IP变量在一个winforms应用程序

本文关键字:一个 应用程序 winforms 变量 服务器 何隐藏 隐藏 我的 IP | 更新日期: 2023-09-27 18:01:42

在c# winforms应用程序中隐藏/保护包含我的服务器IP地址的字符串的最佳方法是什么?

就是这样,为了激活我创建的应用程序,用户应该填写一些包含用户名和密码文本框的表单,然后连接到我的服务器以验证他输入的详细信息。

现在我想要的是隐藏/保护或以某种方式加密包含服务器地址的字符串,因此没有人可以实际更改/访问它,或者至少使它很难被逆转。这可能吗?

我不确定我是否清楚地表达了这个问题,但我希望你们能明白。

如何隐藏我的服务器IP变量在一个winforms应用程序

这是一种荒谬的方法。通过模糊的安全性一开始就很弱,你所连接的IP地址不仅显示在源代码中,还显示在传出数据包、防火墙日志、连接表、数据包捕获等中。

隐藏连接的对等IP地址是一个很大的兴趣领域,并导致了诸如洋葱路由之类的技术。在源代码中隐藏地址是您最不需要担心的。当你使用洋葱路由时,目标IP地址甚至不会出现在你的源代码中,只会出现一些只对下一跳洋葱路由器有意义的cookie,所以混淆源代码成为一个没有问题。


编辑:根据评论,现在很清楚需要的是验证发送响应的远程计算机的身份。有很多方法可以做到这一点,但保护源代码不是其中之一。IP地址很容易被欺骗。存储在应用程序二进制文件中的公钥可以被覆盖,或者可以完全绕过身份验证代码。

实际上,您需要程序中的一些重要功能不包含在安装程序中,而是作为身份验证过程的一部分下载(如果身份验证失败,服务器可以选择不发送它)。响应仍然有可能被窃取,并用于激活额外的安装而不需要身份验证,但这只能由能够至少进行一次有效身份验证的人来完成。

如果你担心这个,那么你需要在响应中使用隐写术来编码客户端的身份。然后,当非法副本开始出现时,您就知道是哪个合法用户进行了第一个副本。

或者将软件的专有部分保留在服务器上,并且永远不要将它们下载到客户端。这是最安全的方法。

为什么要隐藏服务器的IP地址?

假定,您的应用程序将在激活之前与服务器联系并等待一些响应。在这种情况下,我不认为隐藏IP地址是做到这一点的方法。尤其是因为IP地址可能不稳定。相反,您应该简单地在客户机和服务器之间使用相互身份验证。我建议:

  1. 使用DNS解析服务器的IP地址。不用担心这可能被嗅探甚至欺骗。
  2. 使用标准公钥/私钥加密。

应用程序使用公钥将数据加密到服务器。然后服务器用私钥对其解密。伪造的服务器将无法解密数据,伪造的应用程序将无法加密数据。

服务器使用私钥加密响应,应用程序使用公钥解密响应。

实现公钥/私钥的最好方法是使用证书。在服务器端安装私有证书。让应用程序安装程序安装公共证书(通常是由私有证书生成的.cer文件)并将其标记为不可导出(以防止有人将其复制到另一台计算机)。

编辑:Ben提出了一个有效的观点,我只是在调查过程中。比安装证书更好的方法可能是将其嵌入到随应用程序附带的程序集中,并用强名称(。snk文件)。这将确保证书可用于加密/解密流量,但不能修改(因为如果被篡改,将无法加载程序集)。

然后使用CryptoAPI加密/解密您的数据。

哦,你也可以选择使用HTTPS与你的服务器通信。

不要尝试自己进行加密/解密。你不会像那些已经成功的人,或者那些试图破解它的人那样优秀。

相关文章: