管理员用户应该能够编辑密码吗?

信息安全 密码 密码管理 特权帐户
2021-08-15 12:18:08

对于您的典型 Web 应用程序,管理员超级用户应该有权编辑用户的密码,还是应该只有该用户有权?(即使具有编辑能力,管理员也永远不会看到当前密码)。

3个回答

我看到三个相关的问题:

管理员用户是否应该能够查看用户的密码?不,这是个坏主意。您不应该(通过管理界面)公开让管理员用户查看其他用户密码的方式。一些用户可能会在多个站点上重复使用密码。因此,绝不应允许用户查看用户的密码。

此外,允许管理员用户查看其他用户密码的唯一方法是将这些密码明文存储(或者,如果应用了任何转换,它必须是可逆的,在这种情况下,密码也可以存储在清楚的)。这是不好的安全做法。存储的密码应始终进行散列处理,以便您的数据库遭到破坏不会轻易泄露每个人的密码——这意味着管理员用户将无法查看其他用户的密码。

管理员用户应该能够重置用户的密码吗?当然。这很有用。例如,为管理员用户提供一种重置用户密码的方法是合理的,例如,触发给用户的电子邮件以允许他们登录并输入新密码,或者为用户生成新密码并通过电子邮件发送给用户。但是,系统不应向管理员用户显示新密码。此外,在这种情况下,用户应该收到管理员重置密码的通知(例如,作为发送给他们的电子邮件的一部分),并且最好将操作与管理员用户的身份一起记录。

管理员用户应该能够设置用户的密码吗?这是提供给管理员用户的有用且合理的功能。例如,在创建新用户时,管理员用户有时可以为用户生成密码,将其输入系统,然后通过带外通道(例如, 通过电话)。同样,如果管理员用户有一种方法可以转到屏幕为用户设置新密码,给用户足够长的键盘时间以输入他们喜欢的新密码,然后单击“确定”,它有时也会很有用" 并设置用户密码。这些是您可以合理支持的合理用例,而不会产生重大的安全风险。在这种情况下,用户应该会收到管理员重置密码的通知(例如,发送给他们的电子邮件),

您需要先查看 Web 应用程序的整体安全状况,然后才能说“是”或“否”。

这里隐含的问题是允许管理员用户有权编辑任何用户的密码是否违反安全性。如果有人滥用管理员超级用户帐户(合法管理员或恶意攻击者),他们还能执行哪些与更改随机用户密码一样糟糕或更糟糕的事情?例如,他们可以重置发送密码重置电子邮件的用户电子邮件地址吗?他们可以访问敏感的用户信息吗?如果是这样,那么更改密码不会造成任何伤害,而且攻击向量也同样简单。(事实上​​,除非存在连超级用户都无法使用的用户数据,否则恶意攻击者对超级用户帐户的访问是最终的结果。)

此外,还需要考虑副作用。在 Windows 中,如果管理员更改用户的密码,它可以阻止访问以前加密的数据。原因是因为用户的密码用于派生加密密钥。

如果您要阻止超级用户帐户能够更改密码,那么我相信——从系统管理(是的,良好的客户服务)的角度来看——你仍然希望能够允许合法用户重新获得对锁定或丢失帐户的访问权限。这是通过更改密码还是其他方法(一次性令牌)完全取决于情况。

如果情况是您希望能够防止其他有能力且非敌对的管理员(意外)滥用该功能,则通过要求(进一步)提升、提示、丰富的审计控制等来保护敏感功能。

死灵在这里。
你问这个问题的事实告诉我,你存储密码的方法是非常错误的。

这个问题甚至不应该存在,因为如果您安全地存储密码(通过加密强度哈希,使用盐),您在技术上无法发现任何密码,即使使用彩虹表也不行。
您所能做的就是重置密码,这当然不是管理员的工作。

如果您以纯文本或加密方式存储密码,这是错误的。访问您的数据库(和代码)的攻击者(可能只是一个孩子,但也可能是有组织的犯罪、情报机构,可能是一个不太好的国家)可以获得(最有可能是对称的)密钥,并且发现所有用户的所有密码。

用户倾向于在任何地方输入相同的用户名 + 密码,因此通过破坏您的网站,攻击者可能会访问许多用户的帐户,例如 Amazon、FB、E-Mail、Microsoft、Google Docs 等......

因此,以纯文本和加密方式存储密码是一个非常糟糕的主意
。可以想象,在某些司法管辖区,您(或您的公司)也可能对损害负责。

您应该始终使用经过适当加盐的慢速加密安全散列算法存储密码,在这种情况下(希望)在技术上不可能发现密码