html - 保存的用户名/密码出现在 Firefox 的错误字段中
问题描述
我在 Firefox 上遇到了这个奇怪的错误,而不是 Chrome(均已更新)。
在我网站的登录页面上,这些字段是:
<div class="input text required">
<label for="ArchUtilisateurUsername">Identifiant :</label>
<input name="data[ArchUtilisateur][username]" id="ArchUtilisateurUsername" type="text">
</div>
<div class="input password">
<label for="ArchUtilisateurPassword">Mot de passe :</label>
<input name="data[ArchUtilisateur][password]" id="ArchUtilisateurPassword" type="password">
</div>
然后在另一个页面上,我有一个表单来创建与用户帐户不同的“读者”帐户。它使用读取的 ID 和密码作为登录信息,但在这种形式中,两者并不相邻。所以我有这个:
<div class="group-content">
<div id="DivFieldLecteurFormCompteActif" class="input checkbox ">
<input name="data[LecteurForm][compte_actif]" value="" type="hidden">
<input name="data[LecteurForm][compte_actif]" id="FieldLecteurFormCompteActif" value="1" type="checkbox">
<label for="FieldLecteurFormCompteActif">Compte actif</label>
</div>
<div id="DivFieldLecteurFormPassword" class="input password ">
<label for="FieldLecteurFormPassword">Mot de passe</label>
<input name="data[LecteurForm][password]" id="FieldLecteurFormPassword" autocomplete="off" type="password">
</div>
<div id="DivFieldLecteurFormPasswordConfirm" class="input password ">
<label for="FieldLecteurFormPasswordConfirm">Confirmation</label>
<input name="data[LecteurForm][password_confirm]" id="FieldLecteurFormPasswordConfirm" autocomplete="off" type="password">
</div>
</div>
奇怪的问题是,如果用户在登录网站时验证了 Firefox 的“保存我的登录数据”弹出窗口,当他打开“阅读器”表单时,
- “密码”字段填写用户密码
- 密码字段的第一个先前文本输入字段填充了用户的用户名
从密码字段开始:如果前一个是复选框,选择,单选,它被忽略并走得更远。如果我从源中删除带有用户名的输入字段,当我重新加载页面时,它是下一个获取用户名的前一个输入字段。
所有似乎都链接到密码字段:
- 登录表单和阅读器表单具有不同的密码字段名称,但它仍然这样做
- 如果我在代码中删除此密码字段,重新加载后“密码确认”字段将填写用户密码
- 如果我删除两者,用户密码将无处显示,用户名也是如此。
- 如果我将密码字段类型从“密码”更改为“文本”并重新加载,密码不会出现在此字段中,而是出现在“确认密码”中。如果我对两者都这样做,则不再出现(也不再出现用户名)。
最后一点似乎证实了(至少在我的情况下),当 Firefox 保存了网站的用户名/密码时,它会尝试将信息填充到他找到的第一个密码类型字段,然后填充前一个文本 -类型字段。正如您在代码中看到的那样,即使我autocomplete="off"
在场上放了一个,它也会这样做。
因此 Firefox 自动填写了错误的表单,甚至有不同的字段名称(和不同的字段 id),并保存了登录信息。它是一种已知的行为吗?有没有办法防止它(因为自动完成似乎没有做这项工作)?
只是为了防止另一个答案,我从 Firefox 的密码管理器中多次删除了所有数据,这与旧的存储字段名称无关。
解决方案
最后,我在这里找到了一个可行的答案:https ://stackoverflow.com/a/29852908/1459054
在搜索时,这个“错误”......对不起,“功能”在 Firefox 中存在超过 10 年,我看到了多个关于这个标记为“WONTFIX”的错误报告,因为这是预期的行为(“密码管理器不应该依赖字段名称”),它使登录信息可以在任何可以容纳的地方弹出,并且因为“它不涉及很多用户,因此修复它并不重要”。
推荐阅读
- flutter - 如何使排序向下滑动窗口?
- c# - 如何查找设备(Hololens)经纬度
- android - 回收器视图水平滚动在导航抽屉标题中不起作用
- javascript -
does not accept variant Prop - nested - 写入 Realm 的嵌套模式
- python - Buildozer (python-for-android) error message about python2
- c# - c# - Trying to populate textbox and listview from txt file
- python - 如何检查文件上传字段是否为空?
- c# - C#:编译器是否可以自动调用方法?
- image - 使用 Tampermonkey 更改网站上的图像