用户名和密码存储位置

时间:2011-04-18 14:47:31

标签: vb.net registry isolatedstorage password-storage

我正在vb.net中编写一个程序,要求用户在使用该应用程序之前登录。安装程序时会创建主用户,类似于安装Windows时的工作方式。

主要用户可以向该程序添加其他用户。我已经知道我应该加密密码。我的问题是,我应该在哪里存储用户名和密码?注册表,独立存储或.config文件。我不希望任何用户能够修改/删除该文件,因为其他用户显然无法登录。此外,任何登录计算机的用户都应该可以访问此文件。

不保证计算机已连接到互联网,因此必须将其存储在本地。

由于

2 个答案:

答案 0 :(得分:2)

说实话,如果有人有意愿寻找他们会找到的文件,那么存储可以帮助提高安全性,但我会专注于文件本身的内容。

您可以尝试将应用程序的数据存储为加密文件,这可能会阻止业余尝试,但是当您使用.net框架时,您的程序可能会被反编译,并且任何对称加密算法都可能无法使用。

我认为你最好的选择是根据程序所在的计算机生成种子,如果解密失败,请致电home或进入Lock Down。

另一种选择是存储加密的(用对称密钥加密)文件和散列文件(可能在不同的位置)。如果加载文件的哈希值与哈希文件不匹配,那么程序可以调用home(如果你有一个要调用的主页)。

这只是一个想法,实际上没有尝试过这样的事情。

答案 1 :(得分:0)

如果您无法以任何方式在计算机上使用Windows用户/凭据,那么确实没有绝对的方法来阻止文件被删除/更改,因为计算机上的任何人都具有与主计算机相同的访问权限用户,需要修改文件的权限才能通过程序添加用户。

唯一可行的方法是让主用户使用不同的用户名登录,并在该文件/文件夹上设置文件权限,以确保只有主用户具有该文件的修改权限(和其他用户帐户无权修改权限)。我知道你说它在你的环境中不起作用(这是什么?)但是你可以通过你的代码创建用户并在不同的凭据下运行东西,而不需要用户登录任何不同的。

我能想到的唯一疯狂的方法是在计算机上创建一个服务,一旦它开始运行,它就会打开并保存一个带有共享集的文件句柄,这样任何其他进程都无法打开文件进行写入。当然,您必须以某种方式为主要用户进行锻炼才能添加用户。