在c#源代码中隐藏密码

时间:2012-08-27 17:07:51

标签: c# .net passwords

我在c#中使用以下代码从我的网站下载文件:

WebClient webClient = new WebClient();
webClient.Credentials = new System.Net.NetworkCredential("username", "password");
webClient.DownloadFile("http://example.com/file.txt", "file.txt");

只有在满足某些条件时才会下载该文件,因此我不希望用户能够访问我网站上的文件

我的顾客是,如果古玩用户反编译代码,他会找到密码并能够访问我网站上的所有文件。

我已经读过保存密码的安全方法是存储其哈希值,但我不知道如何在此示例中实现它。

我有什么选择来保证我的密码安全并使用户无法找到它?

4 个答案:

答案 0 :(得分:5)

一个清醒的现实:你不能像这样保护你的程序中包含的信息。

必做:选择的用户名/密码,以便访问此单个程序所需的特殊文件 - 您的“访问我的整个网站”用户名和密码。

但是要知道你所做的只是增加一点障碍,在这里;任何想要检查你的程序并找到用户名和密码的人。

执行此操作的唯一“正确”方法是根据用户自己的凭据执行此操作;例如,他们在您自己的系统中的用户名和密码。然后你需要根据这些信息给他们访问权限,你的程序需要提示他们。

答案 1 :(得分:2)

你根本就没有。用户会为您提供密码来执行操作,而不是相反。

如果用户必须证明“某些条件”,则将这些特定条件的证明传递给服务器,并让它决定是否允许下载。

答案 2 :(得分:1)

没有办法阻止这种情况。如果您的程序能够在条件X下访问该文件,则用户可以将程序欺骗到条件X并获取该文件,无论如何。你可以让它变得更难,但你不能让它变得不可能。

答案 3 :(得分:0)

如果数据在程序本身中,您可以将它们视为已经向用户公开。如果凭据在用户计算机上,无论您采取多少措施来解决这个问题,总是有可能找到解决方法。

您可以执行的是为您的程序实现登录表单,并为用户提供登录信息。然后,当用户输入登录信息时,如果凭证存在(通常通过检入数据库),则检查服务器端,如果匹配,则将文件发送给他们。

但与往常一样,用户只是与其他人共享登录信息等问题。