それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ブラウザがパスワードを覚えない(その4)

ブラウザがパスワードを学習しない。記憶するべき!

ブラウザにパスワードを保存させないのが、セキュリティ強化につながりますか?

保存したほうがずっとセキュリティ強化につながる。

ブラウザにパスワードを自動生成させて、それを保存しておいたほうがずっとパスワードを守れる。記憶できる文字数のパスワードは「覚えやすい文字列」だったり、「覚えたパスワードを使いまわす」危険性が高まるので、どこかに書いて忘れるのが一番いい。

パスワードを使い回さないために

記憶(人脳)より、記録(電脳)です。保存したパスワード取り出しすためにパスワード求められる「マスターパスワード」方式が一番いい。

ブラウザにパスワードを保存させないためにとられている手段

いくつか銀行のサイトがパスワードを保存しないので調べたら次のようなものがあった。

  • autocomplete off
  • no submit
  • ajax
  • onunload
  • onsubmit

このそれぞれのサイトでパスワードを追加する方法を考えてみたい。

autocomplete off

これは、古くからテンプレのように用いられるが、保存したパスワードを使わせない設定。 こちらは、chrome://flags のパスワード関連のチェックボックスをオンにすると無効化できたし、Chrome34あたりから、「無視」が基本になったはず。

フォームなし( ajax / unload )

Appleicloud が用いてた。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にパスワードを「追加する方法」が他にないからです。

SafarimacOS のキーチェーンなら、手作業で追加できるので学習しない云々関係なく追加できるので困らない。

関連記事

ブラウザでパスワードを学習しないベターな方法 - それマグで!

ブラウザのパスワード学習をさせる。(後日談 - それマグで!

パスワードを学習オフにされたサイトのフォームを学習する - それマグで!