Webブラウザのパスワード管理を見直した

経緯

ブラウザのパスワード管理を統一する

LastPassに登録していたWebサイトを手軽に移動できるならどちらでもよかった。 それぞれのサービスでエクスポート、インポートできる形式が違うのは面白い。

古すぎて消滅したWebサイトのデータがあったりするので、形式を変換しつつ、フィルタリングと並び替えもするスクリプトを作った。見どころは以下です。

  • ヘッダー行の列名を見て読み取り元を判別する
  • 何もマッチしない正規表現 Regexp.union() を知った
  • urlusername の2列で並び替えるため Array#<=> を使った
  • Enumerable#injectCSV#<< を使うと、ヘッダー行ありのCSV形式文字列を簡単に出力できる

password formatter (google account password manager/firefox sync/lastpass)

gist

$ ruby -v
ruby 3.2.0 (2022-12-25 revision a528908271) [x64-mingw-ucrt]

# 構造や形式が違う
$ head -n 1 lastpass.csv firefox.csv chrome.csv
==> lastpass.csv <==
url,username,password,totp,extra,name,grouping,fav

==> firefox.csv <==
"url","username","password","httpRealm","formActionOrigin","guid","timeCreated","timeLastUsed","timePasswordChanged"

==> chrome.csv <==
name,url,username,password

#
# lastpassからchrome
$ ruby password-formatter.rb --to chrome --filter_url=localhost --filter_username=test lastpass.csv > lastpass.chrome.csv
$ head -n 1 lastpass.chrome.csv
"name","url","username","password"

#
# firefoxからchrome
$ ruby password-formatter.rb --to chrome --filter_url=localhost --filter_username=test firefox.csv > firefox.chrome.csv
$ head -n 1 firefox.chrome.csv
"name","url","username","password"

#
# chromeからfirefox
$ ruby password-formatter.rb --to firefox --filter_url=localhost --filter_username=test chrome.csv > chrome.firefox.csv
$ head -n 1 chrome.firefox.csv
"url","username","password","httpRealm","formActionOrigin","guid","timeCreated","timeLastUsed","timePasswordChanged"

Google Account Password Managerは一見すると情報量が少ないんだけど、アプリアカウントも管理していて油断がならない。

  • LastPass
    • ✅テキストファイルをインポートできる
    • ✅テキストファイルをエクスポートできる
    • よくデータ漏洩している
    • やめたい
  • Firefox Sync
    • 同じPCにインストールした別のブラウザのデータをインポートできる
    • ✅テキストファイルをエクスポートできる
    • 知名度が低い
    • Mozilla Foundationには頑張って欲しいので毎月寄付してる
  • Google Account Password Manager
    • ✅テキストファイルをインポートできる
    • ✅テキストファイルをエクスポートできる
    • ほとんどブラウザと一体化してる
    • 近い将来にGoogle Oneを使い始める気がしている