1

我正在尝试为 Web 门户(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;

谢谢!

4

2 回答 2

2

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

于 2012-06-06T15:02:29.523 回答
0

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

另一种方法是采用人们用来复制 Oracle 密码散列算法的算法 - 但这实际上是一起被黑客攻击的并且可能会被更改: http ://www.petefinnigan.com/weblog/archives/00001097.htm

于 2012-06-06T16:21:23.957 回答