Twitter経由でこんな記事に出会った。

https://hackernoon.com/username-or-password-is-incorrect-is-bullshit-89985ca2be48

英語のブログではあるが、Webサービスなんかでログイン失敗したときに「IDもしくはパスワードが違います」って表示されるけど、それって意味なくねっていう記事。

IDが合っていてパスワードが違うだけでも「IDもしくはパスワードが違います」と表示するのは、セキュリティ目的によるもの。これを「パスワードが違います」とだけ表示すると、不正なユーザに「あ、IDは合ってるんだな」と情報を与えてしまうことになる。だからIDが合っていたとしても「IDもしくはパスワードが違います」と表示するのだ。というのは、こういうサービスを実装する人にとっては常識とも言える。

上記の記事でもそこは触れているのだけど、本当にハッキングする目的であればユーザ登録画面を使うことで有効なIDかどうかは調べられるのだから意味が無いだろという提示をしている。

ユーザ登録を行う際は、二重登録を防ぐ意味でIDが登録済みかどうかのチェックを行っている。ユーザの利便性に配慮するため、登録時にIDが登録可能かどうか表示してくれるものが多いと思う。ユーザ登録フォームで表示しなくても、登録実行時にエラーになるだろう。

このユーザ登録画面を利用したら、IDが存在していることは分かるわけである。ユーザの利便性を考えるなら、ログイン時にIDが間違っているのかパスワードが間違っているのか、ちゃんとユーザに提示したほうがよくないかという話で、なるほどと思ったのである。

サービスによってIDを使い分けている人からすると、たしかにこの仕様は不便極まりない。

ただ、だからといって私が今後「IDもしくはパスワードが違います」と表示するのを止めるかというと、そうではない。単に「そういう考えもあるのか」とハッとしたというだけである。

今まで機械的に「IDもしくはパスワードが違います」と表示するのが当たり前だと思っていたけれども、ユーザ登録のフローまで含めて考えるとIDをぼかす意味があるのかというその発想がなかった。

ユーザ登録時についてはIDの重複チェックを予め行って、使えるIDなのかどうかを提示する機能を実装するのが当たり前ですらある。なぜなら、そうしておかないとユーザ登録を諦めてしまう人が出てくるからだ。

しかしそのユーザの利便性を考えての行為が、ハッカーに対してIDについての情報を与えるものとして使えてしまうわけである。それならそもそもログイン時にIDをぼかす意味が無いだろうという考え方は、自分の中にはこれまでなかったのでとても興味深い意見だなと思った。

これはログインについて2段階認証が当たり前になりつつある今、余計にIDをぼかす意義が薄れてきているのかもしれない。セキュリティ目的なのであれば、機械的に「IDもしくはパスワードが違います」と表示するのではなく、IDが特定されてしまったとしても不正利用されないよう2段階認証の仕組みを取り入れるとかしたほうが有意義かもしれない。

今すぐ「IDもしくはパスワードが違います」と表示するのを止めるかはともかくとして、自分の中の固定観念に気づかせてくれたという意味で面白い記事だった。

ご意見はこちらまで