三层中如何根据不同的客户端权限控制对数据库服务器的访问?(200分)

  • 主题发起人 主题发起人 lxggc
  • 开始时间 开始时间
L

lxggc

Unregistered / Unconfirmed
GUEST, unregistred user!
这个问题大家讨论得好像很少,李维的书上也少有讨论,我感觉大家都在回避这个问题,现在的情形是客户端联入app server,而app server通过超级用户权限链接 db server, 即任意客户端通过app server可获得对db server的超级用户的权限,而在 app server 中实施权限管理本人觉得非常麻烦。
希望有这方面开发经验的朋友赐教!
 
1、对于数据库用户的权限不要给得太大
2、appserver不要提供execquery之类的方法
3、不要让客户羰端直接输入SQL语句来执行
 
感谢dira的回答, 不过我觉得你的方法都是权宜之计,在大中型的项目中不同的客户肯定有不同的访问权限,在app server 的设计中应该如何体现这一点并与db server的访问权限无缝集成呢?
 
数据库的连接应该是由AppServer来控制的,权限应该自己来管理,权限可以分别由客户端和AppServer来进行验证,应该是没有定式的,李维书上的例子都是入门级的小儿科,草草的看看也就行了,权限控制是系统中比较复杂也是比较麻烦的部分,涉及到数据访问、效率等诸多方面的问题,不是三言两语能够说清楚的,而且还要看具体的应用、安全控制级别等等。
 
我是这样处理的
客户端传递用户信息,在中间层逻辑判断
 
恳请各位大侠能讲清楚点,本人认为多层技术已经比较成熟,没有完善的身份认证权限控制是不可想象的,否则一些大型项目的安全型如何谈起?
 
superatom大侠,我现在的主要问题是如何控制不同用户对数据库的访问,比如Oracle有一个表,假设其中一个字段对用户A来说可读写但对用户B只读(数据库中已如此设计),现在
在app server中该如何实现呢?
 
我的意思是将逻辑放在中间层,客户端无论何动作都将本身信息传递给中间层,由他来判断,这样你总会了吧
 
to dira:
这样实现太麻烦了吧,这样做的话在数据库服务器中就不需要进行任何权限控制了,这样合理吗?再说所有的权限控制都由 app server 完成,如果用户很多的话你的权限控制将会变得很烦杂,也会给系统的效率带来很大的影响(因为你的每次存取都需要实施权限检查),有没有更好的方法呢?
 
如此,对于每个用户就可以控制拉
要不然你根据用户权限动态生成彩旦和界面(DOCK进去)
 
还是请高手来吧
 
那你只有使用2层的控制方法了,dira的方法在许多大型项目中也是如此
 
我觉得都一样吧,对服务器的方法设权限就行。
 
--------------
来自:lxggc, 时间:2003-8-19 22:05:00, ID:2120633
to dira:
这样实现太麻烦了吧,这样做的话在数据库服务器中就不需要进行任何权限控制了,这样合理吗?再说所有的权限控制都由 app server 完成,如果用户很多的话你的权限控制将会变得很烦杂,也会给系统的效率带来很大的影响(因为你的每次存取都需要实施权限检查),有没有更好的方法呢?
------------------------
你只要传很少的字段如用户名,就可以在APPSERVER的各接口及方法中验证了,并不困难
 
同意dira,我们正在做的项目就是如此.
 
个人认为通过控制菜单等界面元素来实现权限管理是非常不可取的,其安全性极难保证,何况用户完全可以不通过你的程序而自己编写客户端程序呢?
总之这个问题我认为是目前多层系统的一个先天缺陷,或者从另一方面说,对本人提出的安全要求不宜采用多层来实现,各位认为呢?
 
不知类似asp的权限认证你用过没有(即开始处用包含文件验证身份),
com+自带的角色认证也可以啊,只是与windows的联系太紧密。
 
看来关心这个问题的人还是蛮多的,希望有高手能跟帖
 
我觉得由中间层认证是相对可行的方法,如果将认证由数据库去做,那样势必更慢。
另外由中间层来做认证,也可以做得更灵活一些,例如由另外一个数据库来指定用户权限。
 
我也正想这个问题!安全第一,否则做出来产品,吃不了要逗着走!
 
后退
顶部