首页 文章

控制浏览器与记住的密码关联的域

提问于
浏览
0

当我在Firefox中提交带有密码字段的表单时,浏览器会询问我是否要记住我的用户名和密码 . 例如,在Firefox中登录gmail,我在弹出窗口中收到此消息:

您想记住google.com上“markamery@gmail.com”的密码吗?

使用'记住密码','不是现在'和'从不为此网站'选项 .

我正在开发一个插件,用于在多个网站上提供服务 . 用户将在 mysite.com 上拥有一个帐户,我们的客户(如 someclient.com )在其网页上包含来自 mysite.com 的Javascript脚本,这些脚本会将我们的内容和功能添加到其页面中,包括用户可以用来登录我们网站的登录表单 . (登录过程的实际机制都是用iframe,AJAX和HTML5 postMessage 来处理的,并不重要) .

当用户在 someclient.com 上登录我们的插件时,我希望他们的浏览器提示他们记住 mysite.com 上的密码,当他们在 someotherclient.com 上看到我们的登录表单时,我希望它使用他们输入的相同用户名和密码自动完成在 someclient.com . 但是,目前,他们得到了提示

您想记住someclient.com上“yourname”的密码吗?

相反,这不是我想要的 .

我想要的是什么,如果是的话,怎么样?

1 回答

  • 0

    将表单放在iframe中将导致Firefox至少将任何存储的密码与iframe的域相关联,而不是与主页的域相关联 . 您可以使用postMessages与iframe通信 .

    只需让iframe捕获表单提交事件,序列化表单内容,然后通过postMessage将其发送到主窗口;然后主窗口可以从消息中获取表单的内容并使用Javascript处理它 .

    当然,即使在简单的情况下,这是一个相当丑陋的黑客,如果iframe中的内容与主页面中的内容或代码之间存在复杂的交互,那么尝试通过postMessage正确处理它们可能会导致快速下降到疼痛和意大利面 . 如果具有跨域密码自动完成的值很低并且主要问题是具有错误域名的记住密码消息是错误的,那么考虑简单地完全禁用该功能而不是用黑客来破坏你的代码库来修复它 . 您可以通过将窗体的'autocomplete'属性设置为'off'来禁用它,如下所述:Disable browser 'Save Password' functionality

相关问题