web-dev-qa-db-ja.com

HTTP POSTはどれくらい安全ですか?

POSTログイン資格情報を送信するのに十分安全ですか?

または、SSL接続はmust

64
Matt

SSLは必須です。 POSTは暗号化されずに送信されるため、GETより安全ではありません。SSLはHTTP通信全体をカバーし、クライアントとサーバー間で送信されるHTTPデータを暗号化します。

74
Gumbo

<shameless plug>I ブログ投稿 があり、HTTPリクエストがどのように見えるか、GETリクエストがPOSTリクエストとどのように比較されるかを詳しく説明します。

GET /?page=123 HTTP/1.1 CRLF
Host: jasonmbaker.wordpress.com CRLF
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 CRLF
Connection: close CRLF

およびPOST:

POST / HTTP/1.1 CRLF
Host: jasonmbaker.wordpress.com CRLF
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 CRLF
Connection: close CRLF
CRLF
page=123

(CRLFは単なる改行です)

ご覧のように、リクエストがどのように形成されるかという観点からの唯一の違いは、POSTリクエストはWord POSTしたがって、HTTP POSTを使用すると、セキュリティが不明瞭になります。データを保護する場合は、SSLを使用する必要があります。

*areその他の違い があることに注意してください。

40
Jason Baker

それはあなたの状況に依存しますが、資格情報の傍受にはどれくらいの費用がかかりますか?

ソフトウェアQ + Aサイトへの単なるログインの場合、SSLは必要ないかもしれません。オンラインバンキングサイトの場合、またはクレジットカードデータを保存する場合はSSLが必要です。
これは技術的な決定ではなくビジネスです。

8
Martin Beckett

HTTP POSTは暗号化されていないため、ネットワークスニファー、プロキシ、またはカスタマイズされたログレベルでサーバーのログに漏洩する可能性があります。はい、POSTデータは通常プロキシまたはサーバーによって記録されますが、セキュアではないため、POSTはGETよりも優れています=。パスワードまたはその他の機密データを保護するには、POSTの前にSSLを使用するか、データを暗号化する必要があります。別のオプションは、ブラウザーでダイジェスト認証を使用することです(RFC 2617を参照)。 (自作の)暗号化はリプレイ攻撃を防ぐのに十分ではないことを覚えておいてください、暗号化する前にノンスと他のデータ(例:レルム)を連結する必要があります(ダイジェスト認証で行われる方法についてはRFC 2617を参照してください)。

6
user124546

SSLは必須です:)

HTTP Postはプレーンテキストで送信されます。たとえば、Fiddlerをダウンロードして使用し、HTTPトラフィックを監視します。そこに投稿全体を簡単に表示できます(またはWireSharkなどのネットワークトラフィックモニターを介して)

5
Ken Pespisa

安全ではありません。 POSTは、GETと同じくらい簡単に探知できます。

4
driis

いいえ... POSTはまったく安全ではありません。 SSLは必須です。

POSTは、クエリ文字列のパラメーターのみを効果的に非表示にします。これらのパラメータは、まだブラウザとエンドポイント間でトラフィックを見て誰によってピックアップすることができます。

2
Justin Niessner

最も安全な方法は、資格情報をまったく送信しないことです。

ダイジェスト認証 を使用する場合、SSLは[〜#〜] not [〜#〜]が必須です。

(注意:HTTPを介したダイジェスト認証は、POST HTTPSを使用)よりも常に安全であることを意味しているわけではありません。

2
ykaganovich

POSTはプレーンテキストです。

安全な接続が必要です。

それが安全な接続と呼ばれる理由です。

1
yfeldblum

いいえ、SSLを使用します。

POSTでは、SSLを使用しない限り、値はプレーンテキストとして送信されます。

1
Dana Holt

HTTP GETとHTTP POSTの唯一の違いは、データのエンコード方法です。どちらの場合もプレーンテキストとして送信されます。

ログイン資格情報に何らかのセキュリティを提供するには、HTTPSが必須です。

HTTPSを提供するために高価な証明書も必要ありません。約20米ドルで非常に基本的な証明書を発行するプロバイダーが多数あります。より高価なものには、電子商取引サイトにとってより重要な本人確認が含まれます。

1
tadman

この素晴らしい記事をご覧ください:

悪意のある保護POSTリクエスト

https://perishablepress.com/protect-post-requests/

0
SandroMarques

POSTすべてのデータはプレーンテキストで「移動」しているため、リクエストだけでは安全ではありません。

安全にするためにはSSLが必要です。

0
rogeriopvl

暗号化されていないHTTP接続を使用している場合、POSTデータはプレーンテキストで送信されます。これが十分に安全であるかどうかは、使用方法によって異なります(ヒント:安全ではありません)。

サーバー、クライアントマシン、およびそれらの間のすべてのマシンの両方が、制御された完全に信頼されたネットワークの一部である場合、これは問題ありません。

これらの非常に限られた状況の外側(時にはその中ですら)では、プレーンテキスト認証が問題を引き起こしています。

0
cmason