Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在winforms应用程序中隐藏我的服务器IP变量_C#_String_Winforms_Obfuscation - Fatal编程技术网

C# 如何在winforms应用程序中隐藏我的服务器IP变量

C# 如何在winforms应用程序中隐藏我的服务器IP变量,c#,string,winforms,obfuscation,C#,String,Winforms,Obfuscation,在C#winforms应用程序中隐藏/保护包含我的服务器IP地址的字符串的最佳方法是什么 问题是,为了激活我创建的应用程序,用户应该填写一些包含用户名和密码文本框的表单,然后连接到我的服务器以验证他输入的详细信息 现在,我想要的是隐藏/保护或可能以某种方式加密包含服务器地址的字符串,这样就没有人可以实际更改/访问它,或者至少使其很难被逆转。。可能吗 我不确定我是否清楚这个问题,但我希望你们都明白了。这是一个可笑的方法。从一开始,隐蔽性带来的安全性非常弱,并且您连接的IP地址不仅显示在源代码中,还

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

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

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


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

这是一个可笑的方法。从一开始,隐蔽性带来的安全性非常弱,并且您连接的IP地址不仅显示在源代码中,还显示在传出数据包、防火墙日志、连接表、数据包捕获等中

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


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

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

如果您对此感到担忧,那么您需要使用隐写术在响应中对客户的身份进行编码。然后,当非法副本开始出现时,您就知道是哪个有效用户制作了第一份副本


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

这是一种可笑的方法。从一开始,隐蔽性带来的安全性非常弱,并且您连接的IP地址不仅显示在源代码中,还显示在传出数据包、防火墙日志、连接表、数据包捕获等中

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


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

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

如果您对此感到担忧,那么您需要使用隐写术在响应中对客户的身份进行编码。然后,当非法副本开始出现时,您就知道是哪个有效用户制作了第一份副本


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

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

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

  • 使用DNS解析服务器的IP地址。不要担心这会被嗅到甚至欺骗
  • 使用标准的公钥/私钥加密 应用程序使用公钥将数据加密到服务器。然后服务器用私钥对其进行解密。假服务器无法解密数据,假应用程序无法加密数据

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

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

    编辑:本提出了一个正确的观点,我只是在调查过程中。比安装证书更好的方法可能是将其嵌入应用程序附带的程序集中,并使用强名称(.snk文件)对该程序集进行签名。这将确保证书可用于加密/解密流量,但不能修改