我知道标题有点偏,但很难用短句来解释这个问题。
我是遗留网络应用程序的管理员,可让用户创建调查并将其分发给一群人。我们有两种“用户”。
有时#1中的用户希望我们为他们进行设置(我们提供这样做)。这意味着我们必须以他们身份登录。 这也是我们支持的方式:我们以他们身份登录,然后跟随他们,引导他们。
这让我陷入困境。目前我们的安全性低于标准。但这使我们很容易做到支持。我们确实希望提高我们的安全性,我一直在考虑的一件事就是对DB进行正常的散列,但是,我们需要能够以客户身份登录,如果他们在不告诉我们的情况下更改密码,则需要密码在数据库中进行了哈希,我们无法知道它。
所以我在考虑对密码进行某种双向加密。无论是那种主密码还是某种主密码。
有什么建议吗?
(该平台是经典ASP ......我说这是遗产...)
答案 0 :(得分:1)
我要做的是让支持人员使用他们的用户名/密码登录,但选择用户“模仿”。因此,在您的会话中,您将拥有:
您所做的一切都是使用impersonated_user的权限和首选项完成的。
如果你没有冒充任何人impersonated_user=logged_user
。
这样,您必须始终使用“实际”用户名和“模拟”用户名记录任何操作;例如:
2010-03-09 | 11:34 am | deleted item #890 | 'George' impersonating 'Lizzie'
答案 1 :(得分:1)
你提出的两个选项对我来说都没有吸引力。
主密码可能比您现在正在做的更危险
加密(而不是散列)数据库中的密码对IMO来说还不够好,因为只需要在您的终端上获取密码以获取所有密码。他们真的应该被散列。
我认为作为一个旧的遗留应用程序的产品不可能(或在经济上不可行)以管理员帐户可以冒充用户帐户的方式进行更改,在我看来,这仍然是实现这一目标的最佳方法。世界情景(不是每个人都分享这种观点,讨论问题here)。
如何引入包含您输入的哈希密码的第二个密码列(password2
)?应用程序的登录过程可能很容易调整到查看第二列。它可能很容易实现,我也看不到来自它的任何其他安全问题(如果我当然错了,请纠正我。)
答案 2 :(得分:0)
听起来你想要将你的身份验证与你的身份分开一点。也许类似于管理员覆盖页面,以便在您以管理员身份登录后,您可以选择要使用的用户身份。选择身份后,您将继续使用该应用程序而无需进一步身份验证。
答案 3 :(得分:0)
我喜欢Manrico Corazzi提供的解决方案。它提醒我,当您需要Microsoft的支持时,可以将您的机器控制权移交给技术人员。这可能是实现模仿机制的另一种方式。为了使管理员帐户能够登录,授权的许可证持有者必须明确允许他加入他的会话并以他的所有权限行事。