保存和检索浏览器(和其他)密码
[原文发表地址] 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
……还有……
Internet Explorer
FireFox
转储Widows 8密码的代码在这。 需要在Win 8上用VS2012编译。如果你只想运行EXE,请到此下载。