ban*_*ing 3 html browser passwords input autofill
我研究了它,找不到一种标准的,可靠的方法来使浏览器阻止自动填充并且不记得标准登录表单中的密码.
这对我来说很重要,因为我正在开发一个移动网络应用程序,所以如果用户点击退出而其他人拿到他们的手机,浏览器不应该只是给他们密码帮助他们!
我能想出的唯一解决方案是使密码字段类型="text".
当然,这意味着人们可以"肩上冲浪"并看到用户输入的内容,但同一个人几乎可以轻松地只看用户的手指,看看他们输入的是什么密码......
我不认为间谍软件在这里也是一个真正的问题,因为我不认为type ="password"字符掩码会阻止恶意键盘记录器等等.
所以,我想知道是否有任何其他安全问题,我可能错过了使用type ="text"作为密码字段?
也许如果我将这个想法与输入的动态/随机"名称"属性结合起来,我可以成为赢家吗?
注意 - 解决方案需要符合XHTML Mobile Profile.
另外,请不要在这里告诉我语义上的正确性.我的首要任务是安全性,而不是语义.:)
不好的想法 - 浏览器会记住文本字段,它不会像密码那样自动输入.相反,它会建议密码作为所有人都可以看到的自动完成.我还认为在某人的肩膀上读密码要比阅读他们的按键容易得多.
一些浏览器不尊重密码的自动完成选项的原因可能是因为密码是由一个单独的(理论上更安全的)处理/存储密码数据的方法处理的 - 显然通过使用文本字段,你绕过这个系统,带来任何风险.
我不认为有一个确定的解决方案不涉及js,因为在一天结束时你无法真正控制他们的浏览器记得什么.您只能提供提示和建议.哪个将由不同的浏览器以不同的方式处理.您最好的选择是首先添加:
自动填充="关闭"
你的表格和输入.适用于大多数浏览器 - 但不是全部.
上面的内容将包含在您的表单标签和密码输入标签中,例如:
<form id="form1_randomstring" name="form1" method="post" action="process.php" autocomplete="off">
<input name="password_randomstring" type="password" value="">
Run Code Online (Sandbox Code Playgroud)
正如你在你的问题中所说的,随机化表单和输入名称也会欺骗一些浏览器认为它正在处理不同的形式
此外,如果您使用ssl,浏览器将对他们记住的内容更加保守.所以这可能有所帮助.
最后,作为另一层保护,你可以有一点onload jquery来在docready上手动清除表单字段:
$("input[type='password']").val('');
Run Code Online (Sandbox Code Playgroud)
如果没有运行js,显然没有帮助.
最终解决方案(可能?) 您可以更进一步,使用ajax调用注入表单字段(加上生成随机表单名称+自动完成并通过ssl提供页面).含义js是登录的必要条件,但您可以确保该字段清晰并在页面加载后生成表单.我会挑战任何浏览器来完成它.
如果你选择了那个选项,那么外页和加载ajax的页面都必须通过ssl运行 - 如果你不想要这个替代,可能是通过iframe加载ssl表单(再次权衡 - 用户群需要被认为.)
根据您的要求和用户群,这可能是最有保障的选择.
注意
Autocomplete ="off"可能无法通过严格的XHTML验证.然后一个选项可能是在页面加载后使用jquery添加自动完成属性(再次,显然这不会在没有启用js的情况下工作):
$('#form1').attr('autocomplete', 'off');
Run Code Online (Sandbox Code Playgroud)
另外一点,防止密钥记录器的最简单方法是提供一个选择选项下拉框并要求他们输入密码中的字母/数字.实际上,您必须将密码限制为字母数字,并要求用户在一系列下拉菜单中输入密码中至少三个字母/数字.
摘要
没有完美的解决方案,但有很多选择,你必须考虑什么是适合你的.我可能会把ajax调用作为主要方法.您最初可以加载到表单的链接并使用ajax内容动态替换它,以便仍然有非js用户的选项(减少自动完成权限的用户)
| 归档时间: |
|
| 查看次数: |
2220 次 |
| 最近记录: |