首页 文章

验证重置应用程序的用户Oracle密码

提问于
浏览
1

这是编程和系统管理员的混合,但我决定更多的编程问题 .

目前正在构建用于管理Oracle用户帐户(C#)的密码管理Web应用程序 .

范围要求在允许用户设置新密码之前验证用户的Oracle用户名和密码 . 如果不创建用户密码表(散列或其他方式,这是一种安全风险),我该如何验证旧用户密码?

我目前的解决方案是尝试使用用户指定的用户名/密码连接到数据库 . 对此进行太多尝试会将用户锁定在Oracle端,因此强制执行不太合理 . 这里是否还存在其他安全隐患?或者是否有更好的处理方法?

我们使用AD作为主要身份验证,但AD帐户与Oracle帐户无关,因此只是初步检查 .

Flow of the application (if this helps):

  • AD检查域名是否正确(内部网)

  • 用户输入Oracle用户名/密码

  • 输入旧密码,新密码确认

  • 如果正确,请重置密码

3 回答

  • 1

    正如dpbradley建议的那样,我将使用提供的凭据连接到数据库 . 如果成功,请让他们更改密码 .

  • 1

    用于散列Oracle密码的算法是众所周知的并且不难duplicate . 因此,您可以获取用户的条目,使用相同的算法对其进行哈希处理,并将其与哈希值进行匹配 . 该值在11g之前的DBA_USERS中或在SYS.USER $中可见 .

    这种方法的危险在于使得哈希可用于允许密码的暴力破解(这就是为什么11g使散列值不太可见) .

  • 0

    在调用Alter User时,您可以添加Replace关键字,这样只有在您输入了正确的旧密码后才会更改用户(例如,更改由newPassword标识的用户userName替换oldPassword . )在某些情况下,这不会导致错误您输入了错误的旧密码,但如果您遇到问题,可以查看它们 .

相关问题