ブラウザがパスワードを学習しない。記憶するべき!
ブラウザにパスワードを保存させないのが、セキュリティ強化につながりますか?
保存したほうがずっとセキュリティ強化につながる。
ブラウザにパスワードを自動生成させて、それを保存しておいたほうがずっとパスワードを守れる。記憶できる文字数のパスワードは「覚えやすい文字列」だったり、「覚えたパスワードを使いまわす」危険性が高まるので、どこかに書いて忘れるのが一番いい。
パスワードを使い回さないために
記憶(人脳)より、記録(電脳)です。保存したパスワード取り出しすためにパスワード求められる「マスターパスワード」方式が一番いい。
ブラウザにパスワードを保存させないためにとられている手段
いくつか銀行のサイトがパスワードを保存しないので調べたら次のようなものがあった。
- autocomplete off
- no submit
- ajax
- onunload
- onsubmit
このそれぞれのサイトでパスワードを追加する方法を考えてみたい。
autocomplete off
これは、古くからテンプレのように用いられるが、保存したパスワードを使わせない設定。 こちらは、chrome://flags のパスワード関連のチェックボックスをオンにすると無効化できたし、Chrome34あたりから、「無視」が基本になったはず。
フォームなし( ajax / unload )
Apple の icloud が用いてた。form.submit()
で学習するので、パスワード保存させないために、そもそもform を入れない。また送信にAjaxを用いてログインする手法
また、before unload
で入力値をチェックしてボタンを押したことをチェックして、送信してたのも見かけたと思う。
form を足して解決
この手のフォームなしは、フォーム要素を追加してしまえば概ね「記憶できる」
form 要素を作って送信先を200 ok な同一ドメイン上のURLに変更すれば手軽に記憶できる。
onsubmit
サブミット関連のイベントをすべてfalse にして
onsubmit = function(){ return false; }
イベントキャプチャ(バブリング)のタイミングでボタンのクリックを検出して送信(つまりjQuery)でreturn false を書き換えて送信してるっぽい
此の方式で学習しないフォームを見つけた。
此の方式は onsubmit 系のイベントハンドラをすべて上書きしてreturn true
しまえば解決。
chrome が autocomplete off を無視した理由は・・
「ユーザーがより複雑なパスワードをサイトごとに設定するために」ということなので、その意図を少し理解してほしいと思う。うん
まぁこんなことしたGoogleそれ自体が、Autocompleteしないようにログイン設計しててもうどうしたら良いか頭を悩ますところではあるんだけどね。
なんでこんな面倒なことをしてるのか
Webkitにパスワードを「追加する方法」が他にないからです。
SafariとmacOS のキーチェーンなら、手作業で追加できるので学習しない云々関係なく追加できるので困らない。
関連記事
ブラウザでパスワードを学習しないベターな方法 - それマグで!