使用C#桌面应用程序控制对SQL Server数据库文件的访问

时间:2012-09-24 22:37:59

标签: c# sql-server sql-server-2008 desktop-application

我正在使用C#和SQL Server Express 2008开发一个会计应用程序,该应用程序只在本地访问数据库。我希望客户在安装应用程序时输入用户名和密码,这样他就是唯一一个可以运行应用程序的人,我的问题是:
1.我应该将登录凭据存储在本地文件中,还是使用这些凭据创建一个sql server用户帐户并依赖数据库保守秘密?
2.如果第二个选项可行,如何从安装程序包中执行此操作?

2 个答案:

答案 0 :(得分:1)

您可以执行类似操作,在本地存储数据库设置(如IP,端口,用户名和密码登录尝试凭据,可能在XML文件中),然后将该程序的登录凭据存储在数据库中。

注意:显然我不知道您对安全性了解多少,但这里有一些提示:

1)不要将密码直接存储在数据库中。使用哈希和一些加密方法。 2)检查用户尝试登录的给定密码的哈希值,以及为程序创建的数据库存储变量,该变量也应该是哈希值。

基本上,数据库在任何时候都不应该知道实际密码是什么,只有你传递给它的给定哈希,并且可以在程序本身中进行比较。

关于数据库访问,我将创建一个只能访问您想要的模式的用户。从那里,获取应用程序/程序中的登录用户,使用凭据(例如,XML文件)登录数据库。在XML文件中加密这些细节也是一个想法,因此它们不能在本地被篡改。

答案 1 :(得分:1)

还有更多内容。 如果安装sql server的人选择了sql server security,那么用户(sa)将被定义并且可以访问所有内容。

如果只有windows那么它将是安装了sql server的windows用户,并且他们可以访问所有内容

如果是混合,两者都可以访问所有内容

然后哪个用户在服务器上创建了数据库,默认情况下它们将是dbo并且具有对其数据库的完全访问权限。

所以这一切都取决于谁在做什么。

您的app intaller是否调用sql server install? 它是否创建了数据库?

Admin和dbo都可以向他们喜欢的任何人授予访问所述数据库的权限。

添加安装应用程序的Windows用户只需要让安装程序执行一两个sql命令。那时你有单点登录。无需密码即可添加Windows用户并将其映射到数据库角色/用户。

如果你想要一个用户可以使用的用户名和密码,如果他们知道它,那么也许只有sql /混合模式是可行的方法。再次从您选择的安装程序执行几个sql命令来执行用户fred密码?,完成工作。

要记住的一点是,为了执行添加登录和用户,角色等的指令,您需要以具有相应权限的其他人身份进行连接,例如: windows admin或sa。

此外,托管网络上的大多数应用程序用户都没有管理员权限,因此您也可以获得一些乐趣。

我建议您阅读有关sql server安全性的内容,有一些方法可以为这只猫设置皮肤,只有您有足够的信息才能选择最佳选项。

如果应用程序的每次安装都创建了自己的数据库和角色,您甚至可能想要考虑基于应用程序的安全性....