在一个假设的网站中,有两种类型的用户,管理员用户和普通用户。普通用户可以更改自己的密码,并且按照最佳实践,在这样做时需要提供他们当前的密码。
管理员用户可以更改任何用户的密码。这样做时是否应该要求他们确认密码?
在一个假设的网站中,有两种类型的用户,管理员用户和普通用户。普通用户可以更改自己的密码,并且按照最佳实践,在这样做时需要提供他们当前的密码。
管理员用户可以更改任何用户的密码。这样做时是否应该要求他们确认密码?
这是最小特权原则的反模式。通常情况下,一个“重置密码”按钮就足够了,它将引导目标用户进入密码重置表单。
但是,如果您确切需要“设置新密码”按钮,那么您应该考虑两个相关的攻击向量 - CSRF 和 XSS。如果您能很好地缓解它们 - 无需额外的身份验证就足够了。
该决定很可能归结为管理员用户配置文件。对于专门的管理团队,可能还有其他补充控制措施,例如对可使用设备的限制、设备强化和访问受控操作室以降低攻击风险。这些补充控制可以消除在允许重置其他人的密码之前要求重新验证的需要。
如果管理员职责已部分或全部移交给用户社区中的受信任用户,例如在分支机构中,那么普通用户甚至公众成员就有可能访问与管理员用户相同的设备。
为了尝试并防止在这种情况下滥用特权,可能需要进行二次身份验证以确保它仍然是请求密码重置的同一(授权)人(即确保他们没有走开并离开机器登录因为失误)。
管理员用户可以更改任何用户的密码。这样做时是否应该要求他们确认密码?
该网站可以在每次设置更改时提示管理员用户输入密码,包括为普通用户重置密码。
无论此策略是好是坏,您只需要确认正确的用户正在执行管理任务,这对于请求当前密码的目的是使正确的用户有权访问正确的帐户的普通用户情况不同。
让他们重新输入密码以执行重置用户密码等操作可能无益- 您已经让管理员用户对您的系统进行身份验证。您可以让每个用户为每个可能的操作输入他们的密码,这样会“更安全”,但没有任何意义。此外,重置密码对于管理员用户来说并不是特别敏感的操作(例如,不像删除资源)
假设您首先已经正确地验证了管理员用户,并且您正在保护免受其他跨站点攻击,这只会真正解决两种情况
在任何情况下都没有太大的好处。通过确保双因素身份验证工作和防止跨站点攻击,您会得到更好的服务。