执行不同的数据库帐户

问题描述:

我试图写一个门户网站(APEX),允许用户自己选择执行不同的数据库帐户

我相关的数据库更改其密码的脚本下PL/SQL存储过程试图编写一个pl/sql过程,我可以通过数据库链接执行以更改该数据库上的密码。

我想我问的是我可以作为一个PL/SQL块中的不同用户连接,并从该块内运行alter user identified by

CREATE OR REPLACE PROCEDURE CHPWD 
(
    Database IN VARCHAR2 
, Username IN VARCHAR2 
, old_pw IN VARCHAR2 
, new_pw IN VARCHAR2 
) AS 
BEGIN 
/* Something like conn Username/old_pw here 

then 

alter username identified by new_pw */ 

END CHPWD; 

谢谢!

标准方法是让拥有高权限用户的程序拥有权限,该用户可以更改任何密码,将程序的执行权授予应该能够执行该程序的用户,并将逻辑放入程序中以实现安全性限制。

我相信主要的问题是在更改之前验证用户的密码。我不认为有一个安全的方法来做到这一点 - 确认密码的最好方法就是像你的评论一样,用它登录到数据库。这需要将密码传递给外部脚本,尽管这会将您的纯文本密码显示给有权访问系统的任何人。

另一种方法是把人们已经使用复制Oracle的密码散列算法的算法 - 但这是有效砍死在一起,可能改变: http://www.petefinnigan.com/weblog/archives/00001097.htm