【发布时间】:2015-10-02 19:42:07
【问题描述】:
我需要检查数据库用户是否有效。
我将允许用户使用 ALTER 命令更改他们的密码,但在我这样做之前,我想验证他们当前的密码以确保他们是他们所说的那个人。 pl/sql内部是否可以获取用户/密码组合并检查它是否有效?
【问题讨论】:
-
我认为这应该回答你的问题...dba.stackexchange.com/questions/43086/…
-
我不确定我是否理解问题的上下文。通常,用户在更改密码之前已经登录到数据库,因此您可以使用他们已登录的事实作为他们知道当前密码的证据。如果您希望用户在不登录的情况下更改密码,您可以使用
alter user命令的replace old_password子句吗? -
一个需要其他人澄清的问题:
SYS_CONTEXT('USERENV','SESSION_USERID')或SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY')不足以获得调用您程序的人的姓名吗?你真的不需要偷看密码,只要问Oracle当前用户的身份验证是谁...... -
如果您在请求时不验证人,那么您无法保证请求本身的验证人。作为一个示例案例研究,Alice 早上登录应用程序,但被叫到离开她的办公桌,然而,她忘记了这一天未能锁定她的工作站。当她离开时,Malice 走到 Alice 的工作站并发出密码更改请求。如果您没有通过让 Malice 输入 Alice 的密码来验证更改请求,那么更改请求将在不应该通过的时候通过。