Javascript 禁用Safari 7.0.2钥匙链密码保存

Javascript 禁用Safari 7.0.2钥匙链密码保存,javascript,html,safari,Javascript,Html,Safari,如何禁止safari使用html或javascript保存表单中的用户/密码? 我遇到了safari 7.0.2中出现的这个问题,您可以将用户/密码保存到密钥链,当您转到同一表单时,它会自动覆盖这些字段?我个人认为这是一种可怕的行为。我认为字段永远不应该被覆盖 我已经创建了一个独立的版本,您可以在这里演示这个问题。 复制步骤(确保使用最新的safari 7.0.2) 键入并单击“用户/通过”保存。它应该提示您保存到keychain,并接受保存 现在单击LoadRandom data链接,您会注

如何禁止safari使用html或javascript保存表单中的用户/密码?
我遇到了safari 7.0.2中出现的这个问题,您可以将用户/密码保存到密钥链,当您转到同一表单时,它会自动覆盖这些字段?我个人认为这是一种可怕的行为。我认为字段永远不应该被覆盖

我已经创建了一个独立的版本,您可以在这里演示这个问题。

复制步骤(确保使用最新的safari 7.0.2)

  • 键入并单击“用户/通过”保存。它应该提示您保存到keychain,并接受保存
  • 现在单击LoadRandom data链接,您会注意到safari现在将用您保存的字段覆盖这些字段
    解决方法:创建另一个(假)密码字段,Safari可能会被它弄糊涂-在这种情况下,自动填充将被“禁用”

    在Safari 7.0.2和7.0.3中测试

    演示(使用红色假密码):


    由于所有浏览器中都有新的行为,因此无法执行此操作-autocomplete=“off”现在被忽略


    有关详细信息,请参见

    我在当天之前为我的项目搜索此问题。最后我找到了下面插件的解决方案

    这个插件的工作结构是这样的。它获取您的输入并克隆它。 使用此克隆并创建相同的输入属性,然后将其克隆到另一个隐藏输入。然后移除原始输入,并将隐藏输入和克隆输入放在同一位置

    这就是为什么。在DOM上加载和映射页面时,现代浏览器(具有钥匙链)控制输入(键入密码)。页面加载后,插件获取输入,克隆并删除原始输入。此操作将更改DOM映射。因此,当页面重定向时,brovser无法访问此控件。所以不要建议你保存密码

    您可以使用此插件解决此问题

    注:

  • 如果你像我一样使用另一个插件。例如,用于密码安全输入的jquery键盘插件。你应该修改你的初始化键盘方法。因为键盘可以控制您的输入,并在输入附近初始化。您可以像下面这样更改这个init方法
  • 初始化键盘更改

    以前

    var _inputwidth = $(elm).parent().find('input').width();
    
    之后 var_inputwidth=$(elm).parent().find('input[type=text],input[type=password]).width()

    因为插件输出是这样的

    <input type="hidden"  id="txtPass" name="txtPass" spellcheck="false" autocomplete="off">
    <input type="text"  id="txtPass" name="txtPass" spellcheck="false" autocomplete="off">
    
    这是造物主的描述

    此jQuery插件在上强制执行autocomplete=off HTML属性 密码(和其他)字段。最近的浏览器选择了忽略 此属性有利于用户首选项。然而,一些金融机构 (和其他)机构可能有充分的理由执行这一规定 练习


    老话 我有一个有2个输入的页面。其中一个输入类型为密码,另一个输入类型为文本(用户名-密码形式)。Safari不能与autocomplete=“off”一起使用。对于这个问题,我使用两个内联隐藏输入。这些输入的通用名称如下所示。我最初的用户名密码输入有不同的名称,所以Safari首先会寻找一个钥匙链来获取或设置这些输入。您可以使用此解决方案防止Safari使用密钥链保护您的安全页面

    <input type="text" name="Username" style="display:none;"/>
    <input type="password" name="Password" style="display:none;" />
    
    
    
    你说得对,在他们修复之前,这是一个很好的攻击。我在虚拟密码中使用这些样式<代码>显示:内联;宽度:0;身高:0;边界:0我仍然不敢相信他们safari还没有修复这个bug lol。这是他们的问题。
    <input type="text" name="Username" style="display:none;"/>
    <input type="password" name="Password" style="display:none;" />