1

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

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

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

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

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

我必须采取哪些措施来确保密码安全并让用户无法找到它?

4

4 回答 4

5

一个发人深省的现实:您无法像这样保护程序中包含的信息。

必须做的:选择一个用户名/密码,该用户名/密码用于访问该单个程序所需的特殊文件,而不是您的“访问我的整个网站”用户名和密码。

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

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

于 2012-08-27T17:13:03.827 回答
2

你根本不知道。用户给你密码来做事,而不是反过来。

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

于 2012-08-27T17:14:15.683 回答
1

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

于 2012-08-27T17:12:42.650 回答
0

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

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

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

于 2012-08-27T17:18:22.077 回答