Internet Explorer 将保存的密码存储在哪里? [关闭]

Posted

技术标签:

【中文标题】Internet Explorer 将保存的密码存储在哪里? [关闭]【英文标题】:Where does Internet Explorer store saved passwords? [closed] 【发布时间】:2011-03-02 16:49:29 【问题描述】:

Internet Explorer 将保存的密码存储在哪里?

由于这是一个编程网站,我并不是在问 IE 存储密码的位置,而是 IE 使用哪个 API 来保存密码

起初我以为微软使用的是标准 api:

CredRead CredWrite

用于保存域通用程序/网站凭据。

CredRead/CredWrite然后转身使用:

CryptProtectData CryptUnprotectData

使用当前用户的帐户加密数据。 CredRead/CredWrite 然后将数据存储在某个神奇的位置,您可以从控制面板中看到其中的内容:

但我没有在其中看到 IE 密码。所以IE不会使用CredRead/CredWrite来存储密码。

IE 使用什么 API 来存储密码,如果它使用 CryptProtectData,那么它会在哪里存储受保护的数据?


编辑:我问的原因不需要解释(因为它很明显),但这是因为我可能想使用相同的机制。

【问题讨论】:

【参考方案1】:

不保证,但我怀疑 IE 使用较旧的 Protected Storage API。

【讨论】:

你说对了一部分。 Internet Explorer 4-6 使用受保护的存储 API。 IE 7-8 将密码存储在注册表和文件中,具体取决于密码类型。 PSAPI 很久以前就被弃用了。 IE6 上次使用它。【参考方案2】:

我找到了答案。 IE 根据密码类型将密码存储在两个不同的位置:

Http-Auth: %APPDATA%\Microsoft\Credentials,在加密文件中 基于表单: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2,使用 url 加密

来自very good page on NirSoft.com:

从 Internet 7.0 版本开始 Explorer,微软彻底改变 密码的保存方式。在 以前的版本 (4.0 - 6.0),所有 密码被保存在一个特殊的 在注册表中的位置称为 “受保护的存储”。在 7.0 版中 Internet Explorer 的密码是 保存在不同的位置, 取决于密码的类型。 每种类型的密码都有一些 密码恢复的限制:

自动完成密码:这些 密码保存在下面 在注册表中的位置: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2 密码使用 URL 加密 的网站要求 密码,因此它们只能是 如果 URL 存储在 历史文件。如果你清除 历史文件,IE PassView 不会 能够恢复密码,直到 您再次访问的网站 要求输入密码。 或者,您可以添加一个列表 需要用户的网站的 URL 名称/密码到网站文件中 (见下文)。

HTTP 身份验证 密码: 这些密码存储在 在凭据文件下 Documents and Settings\Application Data\Microsoft\Credentials,一起 带有局域网计算机的登录密码 和其他密码。由于安全 限制,IE PassView 可以恢复 仅当您拥有这些密码时 管理员权限。

在我的特殊情况下,它回答了在哪里的问题;我决定我不想复制它。我将继续使用CredRead/CredWrite,用户可以在 Windows 中已建立的 UI 系统中管理他们的密码。

【讨论】:

如果它们位于架子上的旧硬盘驱动器上,您能找回它们吗?不是你里面的你,而是一般意义上的你。 :) @dlackey 从概念上讲这是可能的,只要您知道旧的 Windows 密码。【参考方案3】:

简答:在保险柜中。从 Windows 7 开始,创建了一个 Vault 用于在其中存储任何敏感数据和 Internet Explorer 的凭据。 Vault 实际上是一个 LocalSystem 服务 - vaultsvc.dll。

长答案: Internet Explorer 允许两种凭据存储方法:网站凭据(例如:您的 Facebook 用户和密码)和自动完成数据。从版本 10 开始,引入了一个新术语,而不是使用注册表:Windows Vault。 Windows Vault 是凭据管理器信息的默认存储库。

您需要检查正在运行的操作系统。如果是 Windows 8 或更高版本,则调用 VaultGetItemW8。如果不是,则调用 VaultGetItemW7

要使用“Vault”,您需要加载一个名为“vaultcli.dll”的 DLL 并根据需要访问其功能。

典型的 C++ 代码是:

hVaultLib = LoadLibrary(L"vaultcli.dll");

if (hVaultLib != NULL) 

    pVaultEnumerateItems = (VaultEnumerateItems)GetProcAddress(hVaultLib, "VaultEnumerateItems");
    pVaultEnumerateVaults = (VaultEnumerateVaults)GetProcAddress(hVaultLib, "VaultEnumerateVaults");
    pVaultFree = (VaultFree)GetProcAddress(hVaultLib, "VaultFree");
    pVaultGetItemW7 = (VaultGetItemW7)GetProcAddress(hVaultLib, "VaultGetItem");
    pVaultGetItemW8 = (VaultGetItemW8)GetProcAddress(hVaultLib, "VaultGetItem");
    pVaultOpenVault = (VaultOpenVault)GetProcAddress(hVaultLib, "VaultOpenVault");
    pVaultCloseVault = (VaultCloseVault)GetProcAddress(hVaultLib, "VaultCloseVault");

    bStatus = (pVaultEnumerateVaults != NULL)
        && (pVaultFree != NULL)
        && (pVaultGetItemW7 != NULL)
        && (pVaultGetItemW8 != NULL)
        && (pVaultOpenVault != NULL)
        && (pVaultCloseVault != NULL)
        && (pVaultEnumerateItems != NULL);

然后您通过调用枚举所有存储的凭据

VaultEnumerateVaults

然后你检查结果。

【讨论】:

以上是关于Internet Explorer 将保存的密码存储在哪里? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Internet Explorer 缺乏占位符支持,特别是密码字段

从 Internet Explorer 中删除清除和显示密码图标

Internet Explorer(IE11)无法打开基本认证窗口。

在 Internet Explorer 上将 Raphaël 图像保存为 PNG

如何在 Internet Explorer 中为实时网站保存开发人员工具中的 css 更改

使用 Internet Explorer 10 及更低版本保存 Base64 编码的 PDF