HTTPSを介したプレーンテキストパスワード


90

私は現在、HTTPS(したがってSSL暗号化)で動作するPHP OpenIDプロバイダーに取り組んでいます。
それは間違っている私は、プレーンテキストとしてパスワードを送信するために?理論的にはHTTPSはインターセプトできないため、何も問題はありません。または、これはあるレベルで安全ではなく、私はこれを見逃していますか?

回答:


126

安全。これがウェブ全体の仕組みです。フォーム内のすべてのパスワードは常にプレーンテキストで送信されるため、セキュリティで保護するのはHTTPSまでです。


20
マイナーなヒント:一部のログインフォームでは、プレーンテキストを送信する代わりにJavaScriptを使用してパスワードをハッシュします。
Thorarin、

5
@Thorarinが本当にハッシュする場合は、サーバーがパスワードをプレーンテキストで保存しているため、同じソルトでハッシュして確認できます。いや!サーバーはパスワードをプレーンテキストで保存する必要がないため、sslでラップされたテキストでパスワードを送信することをお勧めします。
DGM

11
@DGM:ダブルハッシュもオプションなので、プレーンテキストのパスワードは厳密には必要ありません。
ソラリン

3
@Denis:クライアント側のハッシュはあまり役に立ちません。プレーンテキストより少し難しいかもしれませんが、本当にパスワードを盗もうとする人は問題なくそれを行うことができます。安全なチャネル(ssl)を介して少なくとも1回限りのトークンを送信する場合にのみ安全に機能します。その場合、最初にSSLでパスワードを送信することもできます。
Eduardo Scoz、2011

4
Yahooは、クライアント側のハッシュはsslに完全に移行する余裕ができるまで十分に安全だと感じたと言っているだけです。しかし、ねえ、私はすべてhttps :)です
デニス

73

それでも、GETではなくPOSTリクエストで送信する必要があります。GETリクエストで送信した場合、ユーザーのブラウザの履歴ログまたはウェブサーバーのアクセスログにプレーンテキストで保存できます。


7
はい、私はそれを知っていました、しかしそれはここに来て来る他の人のために残すために良いコメントです :)
WhyNotHugo 2014年

またはヘッダーで送信
ジェームズ

22

HTTPが無効で、HTTPS のみを使用している場合、実際にはパスワードをプレーンテキストとして送信しているわけではありません。


4
ただし、サーバープレーンテキストのパスワードにアクセスでき、プレーンテキストとして保存したり、プレーンテキストとして誤ってログに記録したりすることができます。つまり、パスワードはクライアント側にとどまらず、サーバーはそれが正確に何であるかを認識します。
外部参照

12

ハッシュクライアント側。どうして?ちょっとした実験についてお話ししましょう。会社の食堂のコンピューターまで歩きます。ブラウザーを開いて会社のWebサイトのログインページ(https)にアクセスします。F12キーを押し、ネットワークタブをクリックして、ログを確認し、コンソールを最小化しますが、Webページを開いたままにしてログインページを開きます。座ってランチを食べます。従業員が会社のWebサイトにログオンした後、従業員がよく仕事をしてからログアウトします。昼食を済ませ、コンピューターの前に座ってネットワークタブを開き、フォームの本文にすべてのユーザー名とパスワードをプレーンテキストで表示します。

特別なツール、特別な知識、豪華なハッキングハードウェア、古き良きF12のキーロガーはありません。

しかし、ねえ、必要なのはSSLだけだと考え続けてください。悪者はあなたを愛します。


6
カフェテリアのコメントは、何度読んでも意味がありません。なぜ人々はただコンピュータに近づき、資格情報を入力するのでしょうか 何を証明しようとしていますか?また、ハッシュを使用しても、これがさらに安全になることはありません。これは、ハッシュパスワードに共通のものであり、この問題は、2009年に、書かれていた時にプレーンテキストHTTPを介して送信
WhyNotHugo

4
はい、受け入れられた答え何年も後に読まれているので、私はこれらの両方に賛成しました。@CodeDogが緩和戦略を指摘してくれるとよいでしょう。そして、はい、人々は、たとえば地元の図書館でランダムなPCまで歩いて行き、詳細を入力するだけです!
JoeAC 2017

3
クライアント側のパスワードを公開鍵で暗号化し、暗号化されたパスワードのみをフォームに投稿します。これは非対称キーであるため、クライアント側の公開キーを持っていることは攻撃者にとって役に立ちません。ログごとに新しいキーペアが生成されるため、リプレイ攻撃も機能しません。ログイン試行が失敗した場合でも、キーは変化します。キーペアは、ユーザーがログイン画面に到着したときにサーバー側で生成されます。公開鍵のみがクライアント側のコードに提供されます。
CodeDog 2017

ところで、部屋の番号のパスコードを収集するために、このハックがホテルのビジネスセンターでスタッフによって使用されているのを見ました。彼らはパスコードを使用してワイヤレスに接続し、ビジネスセンターのPCを使用し、部屋に請求されます。
CodeDog 2017

私は自分で自分の銀行口座にログインしてこのような実験を行い、@ CodeDogに同意する必要があります-要求ペイロードには、ログイン名とパスワードの両方がプレーンテキストで含まれています。
Artur Michajluk

6

以前の回答にいくつかのメモを付けましょう。

まず、クライアント側でハッシュアルゴリズムを使用することはおそらく最善の方法ではありません。パスワードがサーバー側でソルト化されている場合、ハッシュを比較することはできません(少なくとも、パスワードのハッシュレイヤーの1つでデータベースにクライアントハッシュを格納しない場合は、同じか、悪い)。また、クライアント側のデータベースで使用されるハッシュアルゴリズムを実装したくない場合は、ばかげています。

次に、暗号化キーのトレードオフも理想的ではありません。MITMは理論的には(クライアントにルート証明書がインストールされていることを考慮して)暗号化キーを変更し、独自のキーで変更することができます。

鍵を交換する理論上のサーバーからの元の接続(tlsは考慮しない):

クライアント要求の公開鍵>サーバーが秘密鍵を保持し、クライアントに公開鍵を生成>サーバーが公開鍵をクライアントに送信

さて、理論的なMITMのatrackで:

クライアント要求の公開鍵> MITMが偽の秘密鍵を生成 >サーバーが秘密鍵を保持し、クライアントに公開鍵を生成> MITMが元のサーバーから公開鍵を受信、今、私たちは偽の公開鍵をクライアントに自由に送信できます。クライアントからリクエストが来たときはいつでも、偽のキーでクライアントデータを復号化し、ペイロードを変更(またはそれを読み取り)して、元の公開キーで暗号化します > MITMは偽の公開キーをクライアントに送信します。

これがTLSで信頼されたCA証明書を持つポイントであり、証明書が有効でない場合にブラウザ警告からメッセージを受信する方法です。

OPへの応答:私の控えめな意見では、遅かれ早かれ誰かがサービスからユーザーを攻撃したいので、プロトコルを破ろうとするので、それはできません。

ただし、できることは、2FAを実装して、人々が同じパスワードでログインしようとするのを防ぐことです。ただし、リプレイ攻撃に注意してください。

私は暗号が得意ではありません。間違っている場合は修正してください。


このディスカッションは2009年からのものであることを覚えておいてください。これらは、当時のほとんどのベストプラクティスでした。
WhyNotHugo

3
@WhyNotHugo私は知っています。この質問へのトップのgoogle回答が私をここに導いたので、私は回答を残すことにしました。
ルッカフェリ

4

他のポスターは正しいです。今、あなたは暗号化するために、SSLを使用していることを伝送それはだとき、それが保護されますので、パスワードのを、優れたアルゴリズムと塩と必ずしているハッシュそれを作る安静時すぎ、...


はい、わかりました。おかげで、私はここのトランスミッションに言及しただけでした。
WhyNotHugo

0

@CodeDogの例には問題があります。

はい、ユーザーはカフェテリアボックスにログインすると思います。企業のカフェテリアからログをキャプチャする場合は、セキュリティ違反です。企業のカフェテリアボックスは、無効にしてセットアップする必要があります。たとえば、条件なし、ロガーなし、リモートアクセスなしなどです。あなたを防ぐために、内部ハッカー。

この例は、コンピュータアクセスセキュリティの良い例であり、ネットワークセキュリティとは実際には関係ありません。これはクライアント側のハッシュの正当化として提供されていますが、コンピューターにアクセスできる場合は、キーストロークロガーを使用してバイパスすることができます。クライアント側のハッシュも関係ありません。@CodeDogによる例はコンピューターアクセスハックであり、ネットワークレイヤーハックとは異なる手法が必要です。

また、前述のように、公共のコンピュータハックは、システムを脅威から保護することで保護されています。たとえば、公共のカフェテリアコンピュータにChromebookを使用します。しかし、それは物理的なハックによって回避されます。営業時間外は、カフェテリアに行き、秘密のカメラをセットアップして、ユーザーによるキーボードプレスを記録します。その場合、カフェテリアコンピュータが壊れているかどうか、またはどのタイプの暗号化が使用されているかは問題ではありません。

物理層->コンピュータ層->クライアント層->ネットワーク層->サーバー層

ネットワークの場合、https / sslレイヤーがプレーンパスワードを暗号化するため、クライアント側でハッシュするかどうかは問題ではありません。したがって、他の人が言及しているように、TLSが安全であれば、クライアントのハッシュは冗長です。


1
良い点を述べている間、あなたは答えに返答しているので(それ自体は質問に実際には関係ありません)、Stackoverflow Q&Aモデルにはあま​​り適切ではありません。
マーティン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.