具有允许您访问网站上的任何用户帐户以用于支持目的的密码是不安全的做法?密码将以安全的方式存储,并且非常复杂。大错误?

评论

为什么不仅仅拥有一个有权修改其他用户数据的管理员帐户?

这样做似乎会在支持人员和问题帐户之间增加另一层,而不会提供更多的安全性。您为什么认为这样会更安全?

@Polynomnial通常,管理员会“看到”与用户不同的屏幕,有时,对于支持人员查看他们遇到麻烦时所看到的确切屏幕会有所帮助。 (不说'上帝'pw是个好主意,但是Admin帐户无法解决此特定问题-除非Admin具有模拟帐户的能力。)

已经有一种方法可以做到这一点。在任何体面的多用户操作系统上,它都称为sudo。

当问这种问题时,想象一下您正在与内部审计员交谈并试图解释为什么要使用此功能有时会有所帮助。您:“因此,我们获得了这个“上帝”密码”。内部审计员:“'上帝'密码-有点像后门,对吗?”您:“嗯,很好,但是,但是...”审计员:“保证!关闭'IS'EAD !!!!!!从所有角度来看,不是吗?

#1 楼

这听起来很像一个“管理员”帐户,否则通常可以无限制地访问其管理员的帐户。

管理员帐户的安全隐患是众所周知的,最佳做法。我不会详细介绍所有细节,但是您的实现会以一项关键功能的最佳实践而中断:可追溯性。

您想知道谁做了什么,尤其是涉及到什么时候管理员。如果管理员可以使用他的密码登录到我的帐户,那么审核员将无法通过事后来确定我是做什么的还是管理员是做什么的。

但是如果取而代之的是,管理员使用他的超级安全密码登录到他的OWN帐户,然后通过他通过自己的帐户进行的访问执行了我本可以做的一些操作-好了,现在我们可以看到一个日志,告诉谁做了什么。当粪肥碰到风扇时,这是很关键的。而且,当其中一个管理员帐户被盗用时(即使尽力而为,也会这样做)。

此外,如果业务增长,您需要2个管理员。他们共享超级密码吗?不不不。他们俩都有自己的管理员帐户,分别具有跟踪和日志记录功能。现在您可以告诉WHICH管理员做了什么。而且,最重要的是,当您解雇一名窃取甜甜圈的管理员时,您可以关闭其中一个帐户。

评论


与此相关的是,虽然通常有必要让管理员更改帐户密码,但是从政策上讲,管理员不应该将帐户设置为直接可使用的密码,而是将其设置为用户必须设置自己的密码。使用该帐户之前,请输入自己的密码。这样,使用帐户完成的所有操作都可以归功于设置该帐户密码的最新人员。如果Bob不愿意使用自己未设置的任何密码登录,则他的密码将在周一更改,而在周四已知他将登录,这些事实共同暗示...

–超级猫
2014年2月7日在20:23

@joshuahedlund这就是VNC,TeamViewer,远程协助,WEbEx等屏幕共享工具的用途。您永远不会冒充用户。您查看他/她的屏幕副本,就好像您站在他们后面看着他们的肩膀一样。

–Tonny
2014年2月7日在23:15

@joshuahedlund我最近编写的后端系统具有这样的功能。管理员单击“以该用户身份登录”按钮,并且系统的行为与管理员原来是该用户一样。但是,所有内容都直接保存在日志中。

– tylerl
2014年2月7日在23:58

该帐户已被终止,其原因如下:未经授权访问甜甜圈。

–托马斯
14年2月8日在9:08

@托马斯:不,不。不是未经授权的访问,而是使其他用户无法使用甜甜圈服务。

– Ben Voigt
2014年2月8日在16:30

#2 楼

到目前为止给出的答案中有很多有用的信息,原始的发帖人应该阅读并记住这些内容。但是,我认为大多数答案并没有抓住问题的实质,因为它与出于支持目的“像他们是用户一样”遍历其公司的网站有关。问题的核心似乎在于此活动发生在网站的前端而不是服务器的控制台。

我知道一家公司的Web应用程序也有同样的需求并且已经以一种我认为是原始发布者正在寻找的解决方案的方式解决了该问题。

他们在Web应用程序中创建了一个“假面舞会”系统,该系统允许特殊组中的员工输入一组页面,这些页面可以查找系统中的任何用户并选择该用户作为要浏览的凭据该系统。它跟踪选择要冒充用户的用户和实际雇员用户为两个独立且同时存在的实体,这两个实体始终记录在每个动作中。

从应用程序的角度来看,这是“以我这个用户的身份对待我,但请记住我实际上是另一个用户”。 sudo的webapp版本,但内置在前端中。

此方法:


消除了审计跟踪的噩梦,因为两个用户帐户都是一直跟踪。
为员工提供页面的确切“用户视图”。
维护员工的个人凭证,以便没有共享或“主”密码。
为用户提供安全性,密码永远不会为员工使用。
将解决方案保留在网站上的应用层上,以便任何人都可以在没有系统级访问或知识的情况下进行操作。
员工还可以随时“伪装”并对照自己的页面内容进行检查。帐户或其他用户帐户,这对于确定错误是全局错误还是特定于用户的错误非常有用。


评论


在我看来,这个答案是最接近OP问题的答案。管理帐户不是解决方案,因为它具有与要进行故障排除的用户之一不同的可见性/行为。

– WoJ
2014年2月8日在16:54

我同意这个答案。在我的工作中,我们的网站内置了类似的功能,允许管理员“模拟”任何其他用户。它允许管理员以与模拟用户完全相同的方式查看和使用该站点,同时仍然允许适当的安全性和日志记录。

–梯形
2014年2月10日下午0:16

举一个很好的例子,phpBB论坛软件内置了此功能。

– KRyan
2014年2月11日下午4:27

#3 楼

是的,这是一个错误。如果攻击者设法保留了该密码,无论您认为多么安全,该怎么办?他将能够以一种极有可能与正常活动区分开的方式篡改用户帐户信息。

如果您控制网站,则您已经可以使用多种方法来获得支持选项。可以编写适当的管理工具来读取和修改必要的信息。拥有“主”密码并没有多大意义。

评论


适当的管理工具不会构成相同(或至少非常相似)的威胁吗?

–安倍·米斯勒(Abe Miessler)
2014年2月7日在17:28

@AbeMiessler否...因为如果您使用单个管理员帐户,则日志记录会显示发生了什么情况以及将其密码张贴在便利贴上时会触发的人。

–基本
2014年2月8日在1:29

#4 楼

此“神”密码等效于root /管理员访问权限:可以执行所有操作。问题是双重的:


是否有某种“可以做所有事情”的访问方式是一个好主意?实际上,它比“好”更“不可避免”,但是是的,这是正常的事情。但是,请确保有适当的使用过程:您不希望管理员从咖啡店的共享计算机上进行管理;而您想知道“谁不知道”。从这种意义上说,当有两个或多个具有管理员特权的人时,最好是他们作为管理员组的成员“作为自己”(在Unix世界中,使用sudo以便记录命令)。 >让管理员通过普通用户API发挥特权是一个好主意吗?这是值得商。的。允许“上帝密码”意味着在整个应用程序中安装“上帝例外”,这有被滥用的风险。它增加了您站点中认证+授权系统的复杂性,而复杂性是您在安全性方面要避免的一件事。错误在复杂性中蓬勃发展。 “上帝密码”在开发过程中可能很方便,但是,总的来说,它往往会增加破坏性安全漏洞的可能性,因此请格外小心。

当然,上下文是一切,并且以上答案通常仅适用。不过,请警惕管理后门,尤其是后门,这些后门不能很好地记录管理请求的来源。

评论


您对“不可避免”与“良好”的评论提出了一个有趣的观点。如果系统的设计使得具有物理访问权限的人将能够做任何事情,包括不可检测地修改审计跟踪,那么允许具有物理访问权限的人可以方便地进行此类事情可能是合理的。使这些事情不方便但并非不可能会带来不便,但不能获得由它们带来的可追溯性优势。我有时认为一件事对某人来说是有用的产品...

–超级猫
2014年2月9日下午17:00

...要出售的是一个“日志箱”,其设计目的是确保在一定时间内无法删除任何已提交的日志记录,而不会对其进行物理破坏。例如,如果设备被限制为以30MB /分钟的速度接收数据,则具有64GB闪存的设备可以保证某人要覆盖一天的持续最大数据速率泛洪,才能覆盖日志条目。如果盒子在其读取/状态功能中包含公钥加密,那么有人可能完全无限制地访问带有此盒子的机器...

–超级猫
2014年2月9日在17:07

...但是如果日志记录了谁获得了这种访问权限,则该记录几乎是不可磨灭的(如果其他机器定期轮询日志框,并且如果它无法访问几个小时就会发出尖叫声,这可能会通知安全人员发现有什么不妥之处,并且他们有一定的时间介入,以免销毁审核信息。

–超级猫
2014年2月9日在17:10

#5 楼

管理员仍然只能扮演自己的角色:具有上帝密码的人可以模拟系统上的任何人。有人可能会争辩说,如果管理员拥有足够的权力,那么用这个帐户限制攻击者可能造成的实际损失并没有多大用处。但是,使用上帝密码的攻击者可以更轻松地掩盖自己的足迹。

#6 楼

拥有“上帝”密码是一个简单的解决方案,但是它仅是通过了解主密码而获得的“授权”,并且不适合进行良好的访问管理(即控制谁可以这样做),也不负责任(真正由谁来负责)请执行以下操作。)

相反,更改凭据数据结构以具有有效用户字段:

{
  user: alice,
  effective_user: bob,
}


您的网页内容应呈现给effective_user,除非它是一个内部管理页面,需要知道谁在真正浏览。请注意,大多数浏览您网站的外部用户在两个字段上始终具有相同的ID:

{
  user: alice,
  effective_user: alice,
}


此安排可让您更好地控制允许谁成为另一个用户,并且还允许您记录/审核谁代表谁做了什么。 (您可以简单地在您要监视的内容上同时记录user和effective_user。)如果您查看定义过程的源代码,则Unix在内部执行此有效用户(和组)操作。在网络上模仿这一点是利用已知的成功范例。

该解决方案还使您可以选择员工可以“翻身”另一用户的页面。您可以选择编写不基于effective_user呈现的页面,即使您的员工有权更改其有效用户ID,也无法看到该页面。

,我已经在网络上实现了有效的用户概念,并且还实现了上帝密码。当所有基础结构均已就绪时,后者很容易插入。但是,就知道谁做了什么和管理访问而言,这实际上不是最佳的解决方案。仔细研究添加有效用户字段实际上涉及多少重构-可能比您想象的要少。

#7 楼

您永远不会冒充用户。 (由于其他已经提到的可追溯性/问责制的各种原因。)
相反,您查看用户屏幕屏幕的副本就像是站在他们后面看着他们的肩膀一样。
屏幕/桌面共享工具,例如VNC,TeamViewer,远程协助等。

评论


我认为您尚未考虑过该声明的实用性。例如,当我在Facebook上并且想查看权限的结果而不是使用“ view as ...”时,我应该去问问我的一位朋友安装vnc并访问我的页面吗?尽管屏幕共享可能适合进行故障排除,但在许多情况下,以给定用户的身份查看网站的行为时,绝对不应涉及用户本身。测试/验证设置或错误修正。

–詹姆斯·瑞安(JamesRyan)
2014年2月11日12:13



#8 楼

如果只有一个人可以访问,则不一定是问题,但是可以通过设置允许该访问的用户帐户来轻松实现。

使用任何root用户/超级用户/ admin类型的功能,行为的日志记录和审核至关重要,这意味着您需要知道谁在做什么。如果多个用户需要进行这样的更改,则应在其帐户上标记为允许该更改。

您可能仍想使用一个额外的,更复杂的密码,该密码必须即使他们具有访问权限也要输入,但您应该要求进行更改的个人进行安全认证,然后再执行这种性质的操作。

#9 楼

您可能别无选择,只能输入“上帝”密码。不管tylerl对拥有两个不同的管理员密码怎么说,除非有人也负责,否则怎么可能会有日志和跟踪记录?从字面上看,您将必须对日志和所有内容进行加密,以使它只能被外界读取,但仍然可以自行编写。如何确定接收到的信息是否合法?显然,如果您没有访问权限,那么没人会这样做,也将不起作用。

#10 楼

我认为您需要具有基于角色的安全性,而不是具有“上帝”模式功能的帐户。这样,您可以让多个具有相同角色的人具有相似的功能,这样,如果您的上帝/管理员不可用,其他人可以进行修复。

我知道这是首选特别是如果您要接受审核。