【发布时间】:2010-11-24 01:01:10
【问题描述】:
很长一段时间以来,我一直在考虑使用 Javascript 小书签为我访问的不同网站生成密码,以避免“到处都有类似密码”的问题,但仍然是可移植的。然而,在阅读this paper 之后,我清楚地意识到使用这种方法意味着单个恶意页面可能会危及我的整个安全。
现在我正在考虑以下解决方案:一个书签,它只会做一件事:在附加原始 URL 的新页面中打开一个 URL(例如 http://example.com/password_man.html?url=slashdot.org)。位于 example.com 页面上的脚本将执行实际的密码生成。
有人发现这种方法有任何安全问题吗?虽然它不如原来的方便,但据我所知,即使是恶意页面也只能看到它获得的密码,并且无法访问主密码等敏感信息。我的假设是否正确?
更多说明:
- 密码的生成将完全在客户端完成。上面示例中提到的“password_man.html”将包含类似于书签中已包含的 JavaScript 代码,它将包含一个输入字段供您指定主密码
- “url”参数的解释也将在客户端完成。我正在考虑将此文件作为我的 google 代码帐户的特定修订版(即 password_man.html 的 v1234)托管,这样可以保证我不会更改用户下方的页面
- 此外,HTTP/HTTPS 也不是问题,因为所有处理都由客户端浏览器完成,不会将数据发送回服务器。您可能争辩说 MITM 攻击可能会修改页面,以便在您使用明文协议(如 HTTP),但如果您已经有 MITM 情况,还有其他更容易进行的攻击途径(例如:从提交密码的请求中窥探密码,或窥探会话 ID 等)
更新:在搜索并考虑问题后,我得出结论,无法在同一页面内安全地完成此操作。即使小书签只捕获域并打开一个新窗口(通过 window.open),恶意站点也总是可以覆盖 window.open,这样它就会打开一个实际捕获主密码的页面副本(本质上执行网络钓鱼攻击)。
【问题讨论】:
标签: javascript security passwords