是的,我对此强烈反对。虽然你的具体用例对你来说似乎足够直接,但在用户界面中为此实现一个简单的覆盖功能,会引入重大的安全风险,而带来的便利性收益却微乎其微。
这种摩擦本身就是一个安全功能!
因此,必须使用 Rails 控制台或切换全站设置的这种不便,实际上是一项关键的安全功能,因为它充当了“安全刹车”,迫使管理员在执行非常敏感的操作时,必须经过一个刻意且高摩擦的流程。
更改用户的电子邮件地址等同于交出其账户的钥匙,因为新的电子邮件地址可用于触发密码重置,从而有效地将原用户锁定在外,并使新邮箱所有者获得完全控制权。
这种摩擦阻止的一些主要攻击向量:
-
攻击管理员账户!——这是最重大的风险。如果攻击者通过钓鱼、密码复用等方式获取了管理员账户的访问权限,一个简单的 UI 按钮或切换开关将允许他们静默且轻松地接管任何其他用户(包括其他员工)的账户;而要求通过 Rails 控制台进行 Shell 访问则提供了强大的安全层。
-
社会工程学攻击!——这为社会工程学攻击敞开了大门。一个心怀不轨的用户可能冒充合法用户,说服管理员为其更改电子邮件地址;同样,当前的高摩擦流程使得管理员更有可能核实或考虑该请求的真实性。
-
内部威胁——恶意的管理员可能滥用此功能来接管账户。
对于此类不频繁但高风险的管理操作,使用 Rails 控制台是合适的,因为它确保执行操作的人拥有服务器访问权限,而非仅仅是被劫持的会话。此外,该操作是刻意的,需要特定的技术知识(并且会记录在 Shell 历史记录中)。