我注意到一些网络应用程序安全扫描程序将某些网站的“自动完成”功能(在用户名/密码字段中)标记为安全风险,因此建议AutoComplete=off
在某处包含或在代码中。
从那以后,我了解到自动完成是一个非标准属性,显然在某些浏览器中不起作用。
我想知道在安全方面是否有“最佳实践”?
我注意到一些网络应用程序安全扫描程序将某些网站的“自动完成”功能(在用户名/密码字段中)标记为安全风险,因此建议AutoComplete=off
在某处包含或在代码中。
从那以后,我了解到自动完成是一个非标准属性,显然在某些浏览器中不起作用。
我想知道在安全方面是否有“最佳实践”?
这取决于您的目标是安全性还是取悦审计员。
如果您为用户名和密码启用自动完成功能,它们将记录在用户的浏览器中。这意味着用户不需要记住它或将其存储在易于访问的地方,这意味着您实际上有机会选择一个强密码。(如果你可以强加密码,你就有更好的机会。)
如果您禁用自动完成,并且浏览器接受此设置,则用户每次都必须再次输入密码。因此,他们会选择一个易于记忆和输入的内容。如果您设法强加一个强密码,他们会将其存储在易于访问的位置以进行复制粘贴。随机文本文件中的密码可能会被意外复制,可能会被错误地粘贴到公共场所(URL 栏、电子邮件等),其风险远比存储在浏览器密码存储中的密码严重。
您可能会发现这样的论点:如果用户使用共享浏览器,他们会将凭据留给使用该浏览器的下一个人。这个论点是虚假的:即使浏览器支持 autocomplete=off,它们也会将密码留给任何通过的键盘记录器。
我认为移动浏览器倾向于忽略 autocomplete=off,这是由于键盘笨拙、移动时缺乏便利贴以及对流畅用户体验的期望。
您应该尽可能彻底地关闭自动完成功能的一个特定情况是信用卡 CCV。甚至可能是您使用时的卡号,但如果您这样做,请将其存储在服务器端并且不要让它完整显示(尽管这不是灵丹妙药)。
但是请确保关闭密码的自动更正功能。您不希望将密码更正为移动设备字典中的单词,或者在用户取消自动更正时将密码添加到字典中。
浏览器忽略的原因autocomplete=off
是因为有一些网站试图禁用密码的自动完成。
那是错的。
2014 年 7 月,Firefox 是最后一个最终实施更改以忽略任何试图关闭密码自动完成功能的网站的主要浏览器。
autocomplete=off
(存档)任何网站试图绕过浏览器的偏好都是错误的,这就是浏览器忽略它的原因。没有理由知道为什么网站应该尝试禁用密码保存。
有些人提出了一个很好的用例:
我有一个共享的公共区域的信息亭式计算机。我们不希望有人(无意或有意)保存他们的密码,以便下一个用户可以使用它。
这并不违反声明:
任何网站试图绕过浏览器的偏好都是错误的
这是因为在共享信息亭的情况下:
浏览器(共享计算机)要求它不尝试保存密码。防止浏览器保存密码的正确方法是将浏览器配置为不保存密码。由于您已锁定并控制此信息亭计算机:您可以控制设置。这包括保存密码的选项。
在 Chrome 和 Internet Explorer 中,您可以使用组策略(例如注册表项)配置这些选项。
启用自动填充
启用自动填充
数据类型:布尔值 (REG_DWORD)
Windows 注册表位置: Software\Policies\Chromium\AutoFillEnabled
说明:启用 Chromium 的自动填充功能,并允许用户使用以前存储的信息(例如地址或信用卡信息)自动填写 Web 表单。如果禁用此设置,用户将无法访问自动填充。如果启用此设置或未设置值,自动填充将保持在用户的控制之下。这将允许他们配置自动填充配置文件并自行决定打开或关闭自动填充。
请告知尝试禁用密码自动完成是错误的,浏览器故意忽略任何尝试这样做的人,他们应该停止做错事。™
表单自动完成有两个主要的安全问题:
考虑到这些可能的“攻击”,网站所有者必须决定添加的功能是否值得拥有,或者它是否会带来太大而无法承担的风险。
最后,这一切都归结为我们正在谈论的那种 Web 应用程序。例如,我不介意自动完成新闻网站的身份验证凭据,但我当然不希望我的家庭银行 Web 应用程序自动完成我的信用卡 PAN!
虽然安全最佳实践肯定是禁用自动完成功能,但需要针对每种情况(以及每个表单字段!)进行不同的评估。
在这种情况下,最佳实践有点随意,因为由应用程序决定是否要允许自动完成。
您是否信任用户的浏览器来存储您的应用程序的凭据?是的:忽略它。否:阻止它。
由于它依赖于浏览器,因此不会增加太多价值,但从深度防御的角度来看,它肯定会有所帮助。