角色的密码是加密存在系统表里的,不用程序得到,只要通过判断connect返回的代码就行了呀。

解决方案 »

  1.   

    应用程序需要为stud1用户分配角色,那么应用程序需要知道这个系统表的访问权限吧!那么应用程序是怎么连接数据库的,怎么获得对这个系统表的select权限的?
    是不是应用程序有一个连接数据库的用户,这个用户有对这个系统表的访问权限,如果是这样子,那么岂不是这个用户口令泄漏了,整个安全措施一点用都没有了!
      

  2.   

    1。你可以在程序中用另一个连接为这个用户分配权限,写成一个函数,通过判断用户条件来执行。这样是要这个此连接具有可为用户分配的角色的权限,但是写在程序中怎么会泄漏呢?2。你也可以另建立两个table,一个用来定义权限大小,一个存用户对应权限代码。当条件满足后修改对应用户权限代码。
      

  3.   

    1:没试验,其实也没有明白。
    2:Select  name, password
    from sys.user$
    where type# = 0
     and NAME =  '角色名' 
    是经加过密的。
    应用程序没有必要得到它。因为这是ORACLE内部层的控制。系统权限的集合是角色。自定义角色加密只是多了一种可控制性。