2011-04-18 157 views
0

我正在编写一个程序在vb.net中需要用户登录才能使用该应用程序。主要用户在安装程序时创建,类似于安装Windows时的工作方式。用户名和密码存储位置

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

电脑不能保证连接到互联网,所以它必须存储在本地。

感谢

+2

另一种选择是基于他们的* Windows *登录凭证验证用户。这样,您可以让Windows为您处理存储用户名和密码。 – 2011-04-18 14:51:40

+0

应用程序是否利用任何类型的存储后端,如数据库?此外,这个应用程序本身以任何方式联网?换句话说 - 如果应用程序安装在两台机器上,您是否期望用户/密码被同步? – RQDQ 2011-04-18 14:53:09

+0

我曾考虑过这个问题,但对于我的程序使用环境来说,这不是一个可行的解决方案。 – Johan 2011-04-18 14:54:02

回答

0

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

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

我能想到的唯一一种疯狂的方式是在计算机上创建一个服务,一旦它开始运行,它就会打开并保存该文件的句柄,以便其他进程无法打开该文件进行写入。您当然必须为主用户添加一些方法来添加用户。

+0

感谢您的输入。我已决定在安装过程中创建该文件。如果程序加载时不在那里,程序将进入锁定状态。解决这个问题的唯一方法就是卸载程序并重新安装。 – Johan 2011-04-19 16:21:18

2

要告诉你实话,如果有人有意志力去寻找他们会发现这个文件,所以存储可以帮助了安全性,但我将专注于文件本身的内容。

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

我认为你最好的选择是根据计算机上的程序生成种子,如果解密失败,请回家或进入锁定状态。

另一种选择是存储加密(使用对称密钥加密)文件和散列文件(可能位于不同位置)。如果加载的文件的散列值与散列文件不匹配,那么程序可能会将它打回家(如果您有家庭打电话)。

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

+0

这听起来很不错。起初,如果找不到文件,我会进入锁定状态。我的首要任务是用户不会意外删除文件。孤立的存储是最好的/最简单的解决方案吗?任何登录到计算机的用户都可以访问该文件吗? – Johan 2011-04-18 15:04:30

+1

我没有使用过独立存储,但从我收集的东西 - http://msdn.microsoft.com/en-us/library/3ak841sy(v=vs.80).aspx - 是路径包括一个其中可能意味着它是每个用户。有人请纠正我,如果我错了,因为我从未使用过隔离存储。 – 2011-04-18 15:10:38

+0

是的,我现在读了一些关于隔离存储的内容,似乎并不是最好的选择。我想我会把它保存在注册表中 – Johan 2011-04-18 17:02:25

相关问题