许多桌面应用程序使用SQL表来管理其用户权限和角色。实际上,它们限制了对应用程序代码中某些应用程序部分的访问。这意味着他们需要一个具有最大权限的SQL服务器的常量连接字符串。
我的目标是C#2010,Sql Server 2005或2008。
如果有任何原因有人发现连接字符串怎么办?(网络跟踪,软件黑客攻击,被解雇的员工或......),他可以通过Managemenst Studio更改所有内容,但您无法理解哪个客户端可以做到这一点。如果要更改连接字符串。您必须在许多客户端中执行此操作,并且您需要重新编译应用程序。
所以我想知道在表中使用真正的SQL登录而不是用户名和密码是个好主意吗?通过SQL登录为每个用户创建连接字符串?
这样就不用担心连接线松动了。同样在SQL代码中,您可以使用GetUser()函数来指示哪个用户真的破坏了查询?
但也许管理权限很难用这种方式,因为没有简单的表来管理权限和用户。
在一个长句中。我想知道以可管理权限的方式验证桌面应用程序用户的最佳方法是什么,以及sql server是否可以记录用户活动?
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以加密app.config文件的敏感部分。上次我检查时,你必须经历一些环节,但设置起来并不困难。
参见例如this question
答案 2 :(得分:0)
为了获得最佳安全性,每个用户需要一个专用数据库帐户;每个帐户应该只具有相应用户可能执行的任务所需的特权。通常您授予角色特权(例如“职员”,“经理”,“主管”)并将这些角色授予用户。显然,需要一些工作来确定每个角色需要哪些特权。在许多情况下,可能有必要不允许直接访问某些表,但只允许隐藏某些不应该对该角色可见的部分的数据库视图,或者进行一些额外检查并确保每个事务的存储过程。整体处理。