web-dev-qa-db-ja.com

Internet Explorerは保存されたパスワードをどこに保存しますか?

Internet Explorerは保存されたパスワードをどこに保存しますか?

これはプログラミングサイトなので、文字通りIEがパスワードを保存する場所を求めているわけではありませんが、パスワードを保存するために使用するAPI)。

最初は、Microsoftが標準APIを使用していると仮定しました。

これは、ドメインの保存に使用されますand汎用プログラム/ Webサイトの資格情報。

CredRead/CredWriteその後、向きを変えて使用します:

現在のユーザーのアカウントでデータを暗号化します。 CredRead/CredWriteはデータを魔法の場所に保存します。その内容はコントロールパネルから見ることができます:

enter image description here

しかし、IEパスワードがそこにありません。つまり、CredRead/CredWriteを使用してパスワードを保存しません。

Apiは、IEパスワードの保存に使用し、CryptProtectDataを使用する場合、保護されたデータをどこに保存しますか?


Edit:私が尋ねる理由は説明が不要です(かなり明白なので)が、それは同じメカニズムを使いたいかもしれないからです。

18
Ian Boyd

答えが見つかりました。 IEは、パスワードタイプに基づいて2つの異なる場所にパスワードを保存します。

  • Http-Auth:%APPDATA%\Microsoft\Credentials、暗号化されたファイル内
  • フォームベース:HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2、URLで暗号化

NirSoft.comの非常に良いページ から:

Internet Explorerのバージョン7.0から、Microsoftはパスワードの保存方法を完全に変更しました。以前のバージョン(4.0-6.0)では、すべてのパスワードは「保護されたストレージ」と呼ばれるレジストリの特別な場所に保存されていました。 Internet Explorerバージョン7.0では、パスワードの種類に応じて、パスワードは異なる場所に保存されます。パスワードの種類ごとに、パスワードの回復にいくつかの制限があります。

  • オートコンプリートパスワード:これらのパスワードは、レジストリの次の場所に保存されます。HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2パスワードは、パスワードを要求したWebサイトのURLで暗号化されているため、URLが履歴ファイルに保存されている場合にのみ回復できます。履歴ファイルをクリアすると、IE PassViewは、パスワードを要求したWebサイトに再度アクセスするまでパスワードを回復できません。または、次のURLのリストを追加できますWebサイトファイルにユーザー名/パスワードを必要とするWebサイト(以下を参照)。

  • HTTP認証パスワード:これらのパスワードは、Documents and Settings\Application Data\Microsoft\Credentials、およびLANコンピューターのログインパスワードとその他のパスワード。セキュリティの制限により、IE PassViewは、管理者権限がある場合にのみこれらのパスワードを回復できます。

私の特定のケースでは、どこの質問に答えます。そして、私はそれを複製したくないと決めました。引き続きCredRead/CredWriteを使用します。ユーザーは、Windowsで確立されたUIシステム内からパスワードを管理できます。

17
Ian Boyd

短い答え: Vaultで。 Windows 7以降、Internet Explorerの資格情報に機密データを保存するためにVaultが作成されました。 Vaultは、実際にはLocalSystemサービスであるvaultsvc.dllです。

長答: Internet Explorerでは、Webサイトの資格情報(たとえば、Facebookユーザーとパスワード)とオートコンプリートデータの2つの方法で資格情報を保存できます。バージョン10以降、レジストリを使用する代わりに、Windows Vaultという新しい用語が導入されました。 Windows Vaultは、資格情報マネージャー情報のデフォルトのストレージボルトです。

どのOSが実行されているかを確認する必要があります。 Windows 8以降の場合、VaultGetItemW8を呼び出します。そうでない場合は、VaultGetItemW7を呼び出します。

「Vault」を使用するには、DLLという名前の「vaultcli.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

次に、結果を確認します。

2

保証はありませんが、IEは古い Protected Storage APIを使用しています。

0
Jerry Coffin