这是一个关于为用户生成一个令牌以重置他/她的密码,而不将所述令牌存储在数据库中的问题。此令牌将是由电子邮件发送的“重置密码”URL的一部分。
解释说,您可以向用户发送一个包含以下信息的令牌
name
expiration date
hash(secret + user name + expiration date)
此方法的问题是,用户可以在令牌过期之前多次更改密码。我认为这是非常糟糕的,因为这意味着如果用户从保留历史的共享计算机访问URL,任何人都可以重置我们用户的密码(即使只是有限的时间)。
因此,我的问题是:是否可能有一个令牌只能使用一次,而不是存储在数据库中?
背景
我们有一个web应用程序,它以通用应用程序用户的身份登录到Oracle数据库中,但是由于历史原因,我们将所有用户用户存储为Oracle数据库用户(我们通过Oracle数据库进行身份验证,将它们登录到web应用程序中)。我们还有其他的Oracle表单,这些应用程序更直接地使用数据库用户(它们不能被删除)。
我试图允许用户通过web应用程序通用用户更改自己的密码。
问题
如何授予web应用程序通用用户更改特定用户密码的能力,而不授予其更改超级用户密码的能力?如果有人偷了网络应用程序的证件,我们想要限制损坏。
Oracle数据库通过以下方法支持这一点:
alter user user123