在不同的数据库帐户下执行存储的PL / SQL过程

时间:2012-06-06 14:14:12

标签: sql database oracle plsql

我正在尝试为门户网站(APEX)编写一个脚本,允许用户在他们选择的关联数据库上更改密码

我正在尝试编写一个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;

谢谢!

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

我认为主要问题是在更改用户密码之前对其进行身份验证。我不认为有一种安全的方法可以做到这一点 - 确认密码的最佳方法是在评论中使用它登录数据库。这需要将密码传递给外部脚本,但这会向有权访问系统的任何人显示您的纯文本密码。

另一种方法是采用人们用来复制Oracle密码哈希算法的算法 - 但这有效地被黑客攻击并且容易被更改: http://www.petefinnigan.com/weblog/archives/00001097.htm