OneDriveなど)のログイン時、マスターパスワードを入力するだけでメールアドレスとパスワードが自動補完されるGreasemonkeyスクリプトを作ってみた。経緯パスワードマネージャ今どきのブラウザはドメイン毎にパスワードを保存でき、ログイン画面で自動的に補完される。覚えきれないという理由でどのサイトでも共通の簡単なパスワードを使うよりは、ブラウザに任せて全て別々の複雑なパスを設定しておいた方が安全、というのが通説である。ブラウザにパスワードを記憶させることの問題は、他人にPCを使われたら丸見えということだが、その点はマスターパスワード機能を使えばよい。ブラウザ起動時にマスターパスワードを尋ねられ、入力しないとパスワードの自動補完が行われない。アカウントの仕様MicrosoftのWebサービスのログイン画面では、パスワードを登録していても自動補完が行われない。これは「パスワードをブラウザに保存しておいたら危険だよ」という思想に基づき、敢えて自動補完を行わせないようにしているためだと思われる。致命的なデータを預けているわけでもないアカウントにアクセスする度に入力を求められるのは、正直なところ手間である。あるのは、入力欄に「autocomplete=“off”」の属性を持たせることで、ブラウザに「この入力欄は自動補完しないでね」と伝える方法である。ブラウザは素直に「はいはいわかりました」と自動補完を行わなくなるが、ブラウザの設定でメッセージを無視して強制的に自動補完させることも可能である。ユーザースクリプトなどで「autocomplete=“on”」に書き換えてしまうという方法もある。Microsoftはそう簡単ではないようで、何故か分からないがいろいろ試しても自動補完が行われない。Firefox付属のパスワードマネージャとは別の、KeeFoxなどのパスワード管理アドオンを使用しても入力欄は空白のままだった。仕方ないのでログイン画面にマスターパスワード入力欄を(勝手に)設置し、それを共通鍵として、あらかじめ暗号化しておいたメールアドレスとパスワードを復号してそれぞれの入力欄に補完する方法をとってみる。Firefoxのマスターパスワードを起動時に入力していても、関係なく常にMicrosoftのログイン画面で入力しなければならないという手間は生じるが、それでも毎回メールアドレスとパスワードを入力する手間よりはましだと考えよう。Firefoxのマスターパスワードの認証が現在有効かどうか、スクリプトから読み取れればその手間も省けるのだが、やり方が分からない。暗号化したパスワードを直接スクリプトに書くことになるが、AESはパスを8~9文字以上に設定すればそこそこ強力な暗号なので大丈夫でしょう。codeさんとこのcrypto-jsを利用している。綺麗なコードではないので参考程度に。});});使い方Greasemonkeyにインストールする方法。上のソースをとりあえずメモ帳にコピー。下の暗号化フォームに「マスターパス」「メール」「パスワード」を入力して暗号化。256bitで暗号化したメールアドレス/パスワードを記入」のところにそれぞれ記入。Greasemonkeyのアイコンの▼をクリック、「ユーザスクリプト新規作成」し、以下の内容を入力し、OK。https://login.live.com/login.srf*出てきたエディタの内容を消して、メモ帳の中身を全部コピー。Microsoftのログイン画面を再読込するとメールアドレス入力欄の上にマスターパスワード入力欄が作られるので、そこにマスターパスワードを入力してエンター。256bitで暗号化するフォーム。javascriptを使って変換しているだけなので、特に暗号化ボタンをクリックしたからといってパスワードなどがどこかに送信されることはない。ikatakosメディアマネージャー文書の先頭へ。