当前,有一个名为form的HTML input / autocomplete属性,将其设置为off时,将禁用该表单或元素的自动填充/自动填充。

某些银行似乎使用此属性来阻止密码管理器正常工作。如今,Yahoo Mail之类的网站似乎也这样做了,因为它们认为密码管理器不安全。

几周前,我在Firefox中实现了一项功能,该功能为用户提供了一个选项来覆盖此用户名/ password字段(即禁用密码管理器)。现在有一个请求,要求它默认覆盖autocomplete=off。引用问题:


此行为是对认为密码管理器有害并希望阻止其生效的网站的让步。总体而言,我认为这些网站通常是错误的,不应对我们的行为进行太多控制。


这对我来说很有意义,原因与此评论中的原因类似


autocomplete = off最近被滥用了很多。 Yahoo开始使用
进行登录(包括Webmail和my.yahoo.com),这就是为什么我停止使用Yahoo的原因。 Webmail应用程序-甚至一些更大的提供商-现在都在使用它,这绝对不是目的。管理员非常自以为是,并坚持认为“出于安全考虑”是因为
保存密码是“不安全的”。

他们被误导了,因为


键盘记录器已经存在并且很广泛,可能比可以读取Firefox密码存储的恶意软件更广泛。
甚至是小侄子的简单攻击
存在:可能只是最重要的一点就是

每次实际上迫使用户使用简单的密码时都迫使用户重新输入密码-易于记忆,易于输入,
甚至可能在多个网站上使用。这显然降低了
整体安全性显着提高,从而对安全性构成威胁。

因此,autocomplete = off会对安全性产生积极的危害。

对于最终用户而言,这是巨大的痛苦,而又没有递归的理由。它们与切断整个客户关系是分开的。


Internet上已经发布了许多变通方法(通常基于基于书签的方法)。 IE11已经删除了对autocomplete=off的支持。问题是双重的:


当在密码字段上使用autocomplete=off时,网站的安全性是否有显着提高? ?还是按照BenB的评论实际上对安全有害?
浏览器是否应默认允许此属性并将大量控制权授予网站? (这是主观的,请随时回答)

虽然我的情况仅针对autocomplete=off的用户名/密码字段(该代码仅影响密码管理器),但我还是欢迎更广泛的输入autocomplete=off的禁用

评论

多么糟糕的选择。 BenB完全不在基地。如Lucas所述,autocomplete = off与密码管理器是否“安全”无关。他没有提到的一种情况是DOM注入/ XSS,它可以并且已经(MySpace就是一个例子,IIRC)被利用来利用输入验证不足的优势,向应用程序中的任意页面添加非法的隐藏登录表单以窃取使用表单自动完成存储凭据的用户的凭据。

这个问题是在谈论密码管理器,而不是表单字段自动完成(尽管问题标题错误)。密码管理器仅在用户确认后存储,而不会自动存储。它还有一个与表单字段自动完成功能分开的商店-实际上,这是Firefox中完全不同的实现。因此,提到的在不知不觉中将密码存储在网吧中的情况并不存在密码字段。

@ user37982这是不正确的。该问题中有一个假设,原因可能是阻止密码管理器正常工作,然后问题朝那个方向徘徊,但这是一个错误的假设。

@Xander正确,但是请注意,存在问题的错误仅与密码大小写有关。我对密码字段不允许使用,对安全性产生了更大的影响,但是我不介意其他用途的评论。

从我的领域来看,仅是仅供参考,我们现在看到与安全性相关的问题/ MFA现在基本上已无用。当用户填写他们的安全性问题并必须使用它们时,信息现在已保存。因此,一个人现在要做的就是检查自动完成功能。我真的仍然不明白为什么Chrome和Firefox希望覆盖网站设置字段的内容。

#1 楼

问题在于,此设置同时控制浏览器中两个相似但充分不同的功能的行为,以致难以获得最佳效果。
首先,我们将您称为“智能”或“天真”或“自动”自动完成。
这是原始的自动完成技术。当您在各个站点上填写表格时,浏览器会监视表格的名称和您填写的内容,并且会默默记住这些详细信息。然后,当访问具有类似外观的表单的另一个站点时,它将使用从先前在其他站点上的行为中获取的值“有用”地填写字段。
这里的想法是节省您的时间,而无需任何配置或决定方面请填写您的名字?我们将自动填写您上次使用的名称。填写信用卡?我们会填写您在其他地方使用的信用卡。
为了帮助您的浏览器,浏览器会与其他网站共享您从一个网站的秘密,以防万一。从安全的角度来看,这是一场灾难,原因很明显,也有几个不明显的原因。必须将其禁用,并且可能一开始就不应实施。
其次,我们具有“显式”或“安全”或“配置”自动完成功能。
这就是世界,主要是保存的用户名和密码。在这种情况下,浏览器仅在您明确同意的情况下保存您的表单数据。理想情况下,它将数据存储在加密存储中,最关键的是,数据与单个站点牢固关联。因此,您的Facebook密码将保留在Facebook上,而您的Amazon地址将保留在亚马逊上。
此技术与众不同之处在于,当检测到匹配的环境时,浏览器将重播已保存的行为。相比之下,另一种技术是通过寻找相似性来自动预期期望的行为。
当您访问该网站并显示登录表单时,您的浏览器应会自动填写您为此目的明确保存的数据。对于用户而言,交互应该是快速且无需考虑的。而且,至关重要的是,绝对应该在网络钓鱼尝试中崩溃。浏览器应该完全不愿意向网络钓鱼站点提供凭据,以至于让她停下来并思考为什么该站点不起作用。
此功能是您防范网络钓鱼的主要防线。它必须工作。如果用户不能依靠此功能在正常情况下透明而轻松地工作,那么不可避免地会降低安全性。
虽然这主要用于凭证存储,但它也是放置其他安全数据的安全场所,例如付款卡,地址,安全性问题等。此类附加数据可能不是特定于站点的,但可能不会在没有提示的情况下自动填充。
一种选择方式可以将它们全部排除
问题这是在许多实现中,autocomplete=false选项控制两种行为。既要保留一个,也要杀死一个。
理想情况下,永远不要禁用“安全”自动完成功能。我们依靠此功能来增加安全性,因此不应允许误导的站点操作员对此进行危害。
理想情况下,默认情况下应禁用“自动”自动完成功能,仅在少数情况下启用条件(如果有的话),您实际上希望浏览器重新使用来自其他站点的输入。

评论


我目前正在努力解决当管理员去修改另一个用户的帐户时不能激活用户名/密码自动填充的问题。的确,autocomplete =“ off”已经失去了很多含义,但是确实需要某种方法来指定页面不是登录表单。

– Briilliand
2014年5月12日22:45

@Brilliand如果它在浏览器中看起来不像登录字段,则不会假定它是登录字段。

– tylerl
2014年5月12日在22:58

不幸的是,“看起来像登录字段”是一个相当宽泛的度量-用户名/密码字段组合作为(大)表单中用于编辑其他用户设置的一部分,似乎与我尝试过的每种浏览器都具有相同的启发性。 Firefox尊重autocomplete =“ off”,但是我发现让Chrome将密码字段视为不属于登录表单的一部分的唯一方法是在同一表单中添加第二个密码字段。

– Briilliand
2014年5月12日23:15



@Brilliand您是否尝试过为这些字段提供非标准名称?通常,浏览器通过元数据来判断,例如字段名称和属性。

– Nzall
2014年6月12日上午10:04

我有一个表单,其中用户在单个文本输入中输入数据,并使用他们的密码确认应进行更改。可悲的是chorme认为它是用户名/密码组合,并自动用电子邮件和密码填写表格。我什么都没做。我最终都将其切换为文本。密码屏蔽仍然很烂。

–frostymarvelous
2015年9月21日在18:31



#2 楼

当我进行笔测试时,如果表单字段要求输入敏感数据(例如信用卡号),不是密码字段并且没有autocomplete = off,我会报告一个问题。

是浏览器非常明智地管理密码的自动完成功能:它们为用户提供了是否存储密码的选项,(大多数)用户可以做出明智的决定。

对于非密码字段,自动完成行为是不可取的。如果我让某人使用我的计算机,他们会转到电子商务结帐页面,并看到我的信用卡详细信息已自动完成-这很糟糕。

评论


这是个好的观点。特定的bugzilla案例仅关注用户名/密码字段(我在问题中未提及这一点,因为我想要更广泛的答案),但是您在信用卡字段上的输入很有意义并且非常有用,谢谢。

– Manishearth
2014年1月26日在21:21

关于卢卡斯的答案,您怎么说?似乎在默认情况下,即使密码字段也不应该覆盖autocomplete = off?

– Manishearth
2014年1月26日在21:23



@Manishearth-对于网上银行,我可能会报告“密码字段允许自动完成”问题。但是我不会冒博客评论之类的低风险。系统。我已经用笔测试了许多在线银行系统(就像其他人在SecSE上一样),但是我认为它们都对登录密码具有autocomplete = off的功能,因此我从来不必打这个电话。

–paj28
2014年1月26日在21:27



但是,如果使用您计算机的人是您呢?大多数时候都是这种情况。

–尼古拉斯·巴布列斯科(Nicolas Barbulesco)
2014年1月27日上午11:31

“如果我让某人使用我的计算机”-当您这样做时,抱怨安全性是否为时已晚?是的,可以有一些中间授权步骤-但实际上,如果其他人坐在您的计算机上并以您的身份登录,那么您就完成了。马被拉进城里,护城河越过,大门被打开,门廊被抬起。也许您可以将贵重物品藏在地牢中。

–花
2014年6月11日18:43

#3 楼

浏览器无视autocomplete=off的原因是因为有些网站试图禁用密码自动填充功能。

那是错误的;并且在2014年7月,Firefox是最后一个实现该更改以忽略任何试图关闭密码自动填充功能的网站的主要浏览器。




2009年6月:IEInternals博客,他们讨论如何保持用户的控制权(存档)

2014年2月:Chrome在开始忽略autocomplete=off(存档)时的公告

2014年1月:Bugzilla错误956906-忽略自动完成提供通过密码管理器(存档)保存密码的=“ off”

关于Firefox更改的Reddit讨论(存档)

任何网站试图绕过浏览器的首选项是错误的,这就是为什么浏览器会忽略它。没有理由知道为什么网站应该尝试禁用密码保存。


Chrome忽略它
Safari忽略它
IE忽略它
Firefox忽略了它

如果我是特殊的雪花怎么办?

有人提出了一个很好的用例:


我有一台共享的公共区域亭式计算机。我们不希望有人(有意或无意)保存密码,以便下次用户可以使用它。


这不会违反以下声明:


任何网站企图绕过浏览器首选项的尝试都是错误的


,因为在共享信息亭的情况下:


不是具有奇怪策略的Web服务器
是客户端用户代理

浏览器(共享计算机)是具有以下要求的一种:不要尝试保存密码。防止浏览器保存密码的正确方法是将浏览器配置为不保存密码。由于您已锁定并控制此信息亭计算机:因此可以控制设置。其中包括保存密码的选项。

在Chrome和Internet Explorer中,您可以使用组策略(例如注册表项)配置这些选项。

从Chrome策略列表中:


AutoFillEnabled

启用自动填充

数据类型:布尔值( REG_DWORD)

Windows注册表位置:Software \ Policies \ Chromium \ AutoFillEnabled

说明:启用Chromium的自动填充功能,并允许用户使用以前存储的信息(例如地址)自动完成Web表单或信用卡信息。如果禁用此设置,则用户将无法使用自动填充。如果启用此设置或未设置值,则自动填充将保持在用户的控制之下。这将使他们能够配置AutoFill配置文件,并自行决定打开或关闭AutoFill。


请输入一个单词,表示尝试禁用密码自动填充是错误的,浏览器有意无视任何尝试这样做的人都应该停止做错事。™

如果您希望浏览器不自动完成项目,则应将浏览器配置为关闭自动完成功能。任何网站都不应将此偏好强加于其他用户。

评论


如果您正在开发一个管理界面,该界面允许管理员设置和重置用户密码,但是浏览器始终错误地使用管理员自己的密码填写这些字段。这可能会导致严重的头痛,需要解决方法。

–西蒙东
16 Mar 2 '16 at 5:21

“任何网站都不应将这种偏好强加于其他用户。”我们是符合HIPAA要求的网站,我们的要求之一是,报名参加我们研究的患者需要手动输入用户名/密码,以确保他们同意所签署的临床试验的条款。我们绝对需要以某种方式禁用此功能。

–胡安·特雷米尼奥(Juan Treminio)
16-4-14在18:22



@JuanTreminio这就是浏览器忽略网站请求以禁用密码保存的确切原因。 HIPAA是错误的。从好的方面来说,您可以让您的IT部门在您的自助服务终端计算机上配置组策略设置,以禁用自动填充功能。但是您不允许禁用自动填充用户的功能。到此为止。告诉安全审核员给我发消息-我们会聊天。

–伊恩·博伊德(Ian Boyd)
16年4月14日在21:24

@JuanTreminio然后做两件事。 1)更改您创建的信息亭计算机上的浏览器组策略2)禁止任何人从您物理控制范围之外的个人计算机访问。

–伊恩·博伊德(Ian Boyd)
16-4-14在23:50



关于管理界面的情况,您可以在其中更改其他用户的密码。为什么使用密码字段隐藏该输入?您将必须通过其他媒介将该新密码传达给用户,这将使任何抬头的人都可以在管理表单之外看到密码。而且,管理员在管理用户登录名时不应让人望而却步。用户在下次登录时应更改任何手动输入的密码。具有正常的输入字段可以使您清楚地知道,此位置不可输入安全的永久密码。

– NineBerry
17年1月31日,0:58

#4 楼

我已经为多家银行做过几次笔试,我们始终建议您禁用自动完成功能。这样做的原因是,大多数用户不使用密码管理器,因此密码会以纯文本的形式保存在浏览器中(某些浏览器实际上会加密自动完成密码,但这只是最近才完成)。
< OWASP测试指南也建议这样做:


大多数浏览器中都存在对表单字段的缓存。对于包含敏感信息(例如信用卡号)的表单字段
,应使用AUTOCOMPLETE = OFF属性禁用自动完成功能,该属性
可在每个INPUT标签中使用1。此功能将无法针对当前版本的HTML规范进行验证
,尽管现在大多数浏览器都支持此功能。


只要保护了敏感信息,没问题此设置的最大问题是使用共享计算机时。缓存您的信息的风险非常大,一个无辜的绕过者可以窃取您的信息。请记住,大多数用户的教育程度不如这里的大多数人。

现在银行无法实际验证您使用的是个人计算机还是共享计算机,因此风险评估为此,最好禁用自动完成功能。

评论


OWASP页面提供了一个密码字段作为示例,但是文字谈到了信用卡字段。您如何看待仅对用户名和密码字段覆盖autocomplete = off?

– Manishearth
2014年1月26日21:25

@LucasKauffman:“某些浏览器实际上会对自动完成密码进行加密,但这只是最近才进行的”-哪些不对密码进行加密?而且,根据“最近”的情况,这种情况何时更改,针对哪个?

–jesup
2014年1月27日上午8:06

@Manishearth:对于不使用密码管理器的用户,如果低安全性站点允许保存密码,是否会增加他们的风险?即不使用第三方密码管理器(尤其是网络同步的密码管理器)时的典型用户行为会导致在多个站点上重复使用密码,从而使攻击者可以利用低速站点的破解来访问站点上的银行信息二? (在假设大多数用户可以重复使用的情况下,尤其是在需要使用多台不共享密码管理器的计算机/浏览器的情况下。)

–jesup
2014年1月27日上午8:11

@Manishearth我也不会为信用卡信息启用它,我喜欢额外的步骤。我确实意识到这会降低可用性,但是风险权衡使这对我来说值得。

–卢卡斯·考夫曼(Lucas Kauffman)
2014年1月27日上午9:27

我看到OWASP除了使用错误的单词外,还给出了非常糟糕的建议。

–尼古拉斯·巴布列斯科(Nicolas Barbulesco)
2014年1月27日,11:23

#5 楼

每个人似乎都忘记了计算机每天都在被盗,大多数计算机都运行Windows。
您无需登录Windows即可更改用户密码。

您认为损失多少?可以由被盗的计算机完成,并将所有自动完成信息保存在浏览器中吗?
大多数甚至没有针对浏览器自动完成的密码保护,因此在浏览器中是否加密数据并没有什么区别填写所有站点的数据。

如今,在Facebook和Twitter上的欺诈行为已经很普遍。
保存的密码是造成这种情况的原因之一。

如果发生这种情况怎么办? CEO会保存密码,而有人会窃取计算机吗?
此功能可以防止所有人被劫持帐户。

评论


IMO的物理安全性是您自己的问题。有了物理访问权,一切都会丢失,例如,一个人只需安装一个键盘记录器就可以窃取它。

– Manishearth
2014年3月7日,3:30

1.有些计算机在菊花上被盗。这些应具有足够的密码保护。 2. CEO不是系统管理员,闯入他的帐户对信息系统不会有任何明显的安全影响。

–好奇
2014年3月7日在6:38

如果用户无法将密码存储在浏览器的(至少经过加密的)密码管理器中,则他们会将其存储在其他位置。在桌面上或键盘下方的一张纸上的文本文件“ passwords.txt”中...

– NineBerry
17年1月31日,0:51