繁体   English   中英

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

[英]Controlling access to SQL server database file with C# desktop application

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM