执行不同的数据库帐户
问题描述:
我试图写一个门户网站(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