如何在Chrome扩展程序中安全地存储密码?

时间:2014-02-28 08:48:14

标签: javascript security google-chrome google-chrome-extension

我正在编写一个Chrome扩展程序,自动填充类似于Chrome自动填充的凭据(在这种情况下Chrome的自动填充失败)。

是否有一种安全的方法可以在localstorage(所有客户端)中存储用户名/密码?如果我加密密码,密钥是否会在本地存储以及有效地使密码无效?

实际上,我希望用户的凭据与Chrome本身在其密码管理器中存储凭据时一样安全。

编辑:将加密密码存储在localstorage中,将密钥存储在扩展目录中的文本文件中是否安全?

3 个答案:

答案 0 :(得分:4)

这是一个避雷针问题。有关详情,请参阅http://blog.elliottkember.com/chromes-insane-password-security-strategy。与Chrome最匹配的位置是鼓励用户使用全盘加密并在远离登录计算机时锁定其屏幕。用户域代码(例如扩展程序(或浏览器))难以正确实现安全存储,其中"正确"意味着能够抵抗任何人都可以从互联网上下载的密码恢复工具。"

你应该file a feature request。有可能公开一个系统级API,它确实为底层操作系统的钥匙串提供了类似的安全性。

答案 1 :(得分:0)

据我所知,本地存储不是存储密码或其他敏感细节的安全位置。看看下面的链接,其中一个人评论了使用javascript 64位编码和deocding方案,但我不知道这种方法对你想要实现的目标有多大帮助。

https://getsatisfaction.com/apperyio/topics/how_to_save_account_password_securely_on_local_storage

希望这有帮助!

答案 2 :(得分:0)

If I encrypt the password, won't the key be locally stored as well effectively making the encryption useless? 是的,它会并且是的,所有客户端“加密”对用户或任何有权访问机器的人都是可见的,因此几乎没有用。除了可能是出于混淆的目的——任何拥有您硬盘驱动器副本的人都无法立即以纯文本形式说出密码。这可能是也可能不是优势,例如。如果使用特定于设备的数据来生成用于加密的密钥(例如硬件 UID),则获得加密数据的人将无法在不知道 UID 的情况下立即对其进行解码。通常,尽管您假设有权访问“加密”密码的人也可以以某种方式访问​​机器,但总而言之,在浏览器中执行时,用户端加密并没有多大意义.