質問: 多くの登録制のウェブサイト(Twitterとfacebookで確認しました)は、ログイン時のパスワードをformのパラメーターに直接載せています。 しかし、パスワードが直接渡ると、サーバー側で**(`分かりづらかったため追記3:`"クラッカー"ではなく"サーバー管理者"に)**パスワードが抜き取られる可能性が出てくるので、ユーザーにとっては不安であると思います。 そこで、パスワードをブラウザ側でハッシュ化してから送るような仕組みにすればこの心配は無くなると思うのですが、そのようなことは行われていません。これはどのような理由によるものなのでしょうか。 ハッシュ化することの問題点として、 パスワードが推測されやすい文字列になっていないか確認できない。 というのが考えられますが、 レインボーテーブルなどを使えば最低限のチェックはできるのではないかと考えました。 ``` 追記1 質問の重複について: SSLを利用したWebサービスでログインパスワードを安全に保存するには?(https://teratail.com/questions/49293) 既に同じような質問がありました。重複した質問をしてしまいました。すみません。(何故か議論が途中で途切れているようにみえますが) ``` ``` 追記2 タイトルの修正: すでに解決した質問ですが、質問内容が伝わりづらかったため、タイトルに対して修正を行いました。 旧題:多くのサービスがログイン時に生のパスワードをそのまま送っているのはなぜか 改題:多くのサービスがログイン時に生のパスワードをそのまま送っているが、「サーバー管理者」にパスワードを悪用されることはないのか ``` ``` 追記4 感想: ユーザーがサービス毎にパスワードを変えないことに問題があるという回答をいただき、解決済みとしました。 恥ずかしながら、私はサーバー管理者による悪用の対策としてパスワードを使いまわすことの問題点を知りませんでした。 要するにパスワードを使い回すな、ということで、質問文が分かりづらかったので、難しい質問だと捉えられてしまった方はすみませんでした。 しかし、パスワードを使いまわしているユーザーが8割以上いる現状を考えると、 パスワードを使いまわさないように周知すると同時に、 生のパスワードを送らせないためのなんらかの対策があったらいいなと思いました。 サービス側がクライアントサイドでハッシュ化していることを証明するのは無理でしょうが、クライアント側で解決できる問題なので、 例えばブラウザに、 デフォルトで1Passwordなどのツールをユーザーに使わせるようにしたり、 パスワードの入力画面を検出して、パスワードとドメイン名を結合したものをハッシュ化して置き換える、 (これならクライアント内で完結できますし、複数のコンピュータでも問題なく使えるはず) などのような対策があったらいいのかなと思いました。 ```
回答: 以前、同じような質問をしました。 参考になれば^^ ログイン時のパスワード送信に関して まず理解しなくてはいけないのは、Zuishin さんの回答にある > > クライアント側でハッシュ化して送信し、それをサーバーで保存、これはつまり生パスワードの保存なのではないですか? > > 保存したものがそのままパスワードとして通用するということですよね? > > > です。 ここを押さえたうえで、その先を検討する必要があります。 私はいろいろ考えましたが、「それってようするにHTTPSだよね」って結論で納得しました。