我使用下面的代码在C#中下载从我的网站上的文件:
WebClient webClient = new WebClient();
webClient.Credentials = new System.Net.NetworkCredential("username", "password");
webClient.DownloadFile("http://example.com/file.txt", "file.txt");
当满足一定的条件的文件只下载了,所以我不希望用户能够访问我的网站上的文件
我corcern是,如果一个用户珍玩反编译的代码,他会找到密码,并能够访问我的网站上的所有文件。
我读过保存密码的安全方式是存储的哈希值,但我不知道如何实现它在这个例子。
做什么选择我要保持我的密码安全,使其无法为用户找到它?
你根本就没有。 用户给你的密码有关的东西,而不是周围的其他方式。
如果用户证明“一定条件”,然后通过这些特定的条件向服务器证明,并让其决定是否允许下载或没有。
一个严峻的现实:你不能保护包含在你的程序是这样的信息。
一个必须做:选择一个用户名/密码仅用于访问特殊文件这个单一程序需要- 不是你的“访问我的整个网站”的用户名和密码。
但是,只知道你正在做的是增加一个障碍,在这里一点点; 谁想要可以检查你的程序,并找到用户名和密码。
唯一的“正确”的方式做,这是一个基于用户自己的凭据来做到这一点; 在自己的系统内的用户名和密码,例如。 那么你就需要给他们基于这些信息的访问,你的程序将需要提示他们吧。
有没有办法防止。 如果你的程序能够访问条件下X中的文件,用户能够将程序诱骗条件X1和获取文件不管是什么。 你可以把它更难,但你不能使它不可能。
如果数据是在程序本身,你可以认为他们是已经被暴露给用户。 如果凭据是用户的计算机上,无论你采取多少措施来解决这个问题总有找到办法解决它的可能性。
你可以做的是实现你的程序的登录表单,并为用户提供登录信息。 然后,当用户输入登录信息做在服务器端进行检查,如果存在(通常是通过在一个数据库检查)的凭据,如果它匹配给他们的文件。
但一如既往,没有与用户公正地分享与其他人等登录信息的问题。