Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.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# 在自动客户端上存储静态密码的最佳方法_C#_Client_Passwords_Client Server_Hardcoded - Fatal编程技术网

C# 在自动客户端上存储静态密码的最佳方法

C# 在自动客户端上存储静态密码的最佳方法,c#,client,passwords,client-server,hardcoded,C#,Client,Passwords,Client Server,Hardcoded,我正在构建一个系统,它由许多连接到服务器的客户端组成。客户端通过web服务调用自动将数据推送到服务器。 我已经构建了一个身份验证机制,以便客户端通过服务器身份验证,这样只有经过身份验证的客户端才能上传数据。 问题是我已经将密码硬编码到客户端代码中,如果有人使用反射器,就可以访问它。 在这个没有用户输入的场景中,在客户端上存储静态密码的最佳方式是什么? 谢谢 (客户端上的.Net版本为2.0,服务器上的.Net版本为3.5)您可以使用多种方法,但最容易实现的方法之一是加密密码,然后将其存储在部署给

我正在构建一个系统,它由许多连接到服务器的客户端组成。客户端通过web服务调用自动将数据推送到服务器。 我已经构建了一个身份验证机制,以便客户端通过服务器身份验证,这样只有经过身份验证的客户端才能上传数据。 问题是我已经将密码硬编码到客户端代码中,如果有人使用反射器,就可以访问它。 在这个没有用户输入的场景中,在客户端上存储静态密码的最佳方式是什么? 谢谢
(客户端上的.Net版本为2.0,服务器上的.Net版本为3.5)

您可以使用多种方法,但最容易实现的方法之一是加密密码,然后将其存储在部署给用户的应用程序的app.config中。

您看过了吗

另外,您的Web服务是WCF吗?如果是这样,您可以使用相互证书安全性。它比密码更健壮


一方面,我会考虑为代码获得一个好的混淆器。这将阻止(或至少阻止)人们在组件上使用反射器

但是,您的身份验证系统听起来不太安全即使您确实加密了密码,如果密码始终相同,也可以像嗅探数据包一样轻松找出需要发送到服务器进行身份验证的内容。因为在发送之前必须对其进行解密。

您至少必须通过SSL

如果要在某个公共客户机环境中安装,您可能还需要研究使用机器哈希对签名XML使用异步加密。类似于许可证制度

我对您的体系结构或运行环境一无所知,因此我无法就什么是最佳安全实现提出任何建议,但我可以告诉您,当前的设置对我来说并不安全。

“我建立了一个身份验证机制,以便客户端通过服务器身份验证,因此只有经过身份验证的客户端才能上载数据。”

他们如何通过身份验证成为“经过身份验证的客户端”

有人可以将你的应用程序复制到他们的家庭计算机上,现在他们是经过身份验证的客户端吗

如果您试图根据程序集中的值决定谁可以上传,那么这似乎是一个巨大的安全疏忽


如果你想避免密码和登录机制,那么你可以进行基于IP的验证。

这是一个大问题-任何人都可以将我的应用程序复制到他们的家庭计算机上,成为经过身份验证的客户端。现在,我使用硬件Id来避免这种情况。但它仍然不够安全。解密机制仍然是可见的通过反射,不是吗?谢谢,我将讨论SSL,已经在使用机器哈希,我将研究许可方案。