保存和检索浏览器(和其他)密码

[原文发表地址] Saving and Retrieving Browser (and other) Passwords

[原文发表时间] 2031-8-9

安全平衡始终是用户便利与绝对安全之间的一个问题. 你想要安全? 那么请断掉你电脑的网络。请不要保存你的密码。请用多重身份验证。但是这不合理。

· 浏览器会让你保存你在表格中填写的内容,包括密码。

· 如果你用管理员的密码登录到一些浏览器的服务,它们会同步那些设置/历史/密码到其他运行了相同浏览器的电脑。

· 那些密码需要存储到本地的某处,它们需要被浏览器检索(没有以管理员身份运行)以便于浏览器帮你填写。

· 一些人通过编程取回这些密码。

· 如果是你本人,以你的用户运行是可以访问这些密码的,同样其他以你的用户 运行的代码也可以访问它们。

如果你不喜欢这样,不要保存你的密码。

我认为这些对最近吵得沸沸扬扬的关于浏览器安全的关注(我也曾担心过)是对隐私容易被暴露的担忧。 当你觉得别人似乎轻易就能得到你的密码时会感到不爽。但是它们并没有丢。

请记住安全十大定律,特别是第三条。

定律三:如果一个坏人可以毫不受限地物理访问你的电脑,那已经不是你的电脑了。

每一个密码储存库都有这种行为。如果你的密码是存储在本地的, 那么它们也许是加密的,但是它们是被反向加密存储的。

这是不是一个安全漏洞?不,你是用用户身份保存的你的密码,他们只能被以这个用户身份运行的代码检索。

这是在Windows 8上用来检索并转储你的Windows密码的几行代码 。

 using System;
  
namespace DumpCredentials {
    class Program {
        static void DumpCredentials(Windows.Security.Credentials.PasswordCredential cred) {
            Console.WriteLine("Resource: {0}", cred.Resource);
            Console.WriteLine("UserName: {0}", cred.UserName);
            Console.WriteLine("Password: {0}", cred.Password);
        }
        static void Main(string[] args) {
            Windows.Security.Credentials.PasswordVault vault = new Windows.Security.Credentials.PasswordVault();
            Console.WriteLine("{0}", vault.GetType());
            foreach (var cred in vault.RetrieveAll()) {
                cred.RetrievePassword();
                DumpCredentials(cred);
            }
 
        }
    }
}
 

如果你不喜欢保存你的密码,有时间的话你可以改变你的浏览器设置,或者考虑其他的像LastPass、KeePass或者1Password这样的密码存储库。

Chrome
image

……还有……

image

Internet Explorer
image
FireFox

image

转储Widows 8密码的代码在这。 需要在Win 8上用VS2012编译。如果你只想运行EXE,请到此下载