web-dev-qa-db-ja.com

GET vs POST

サーバーへのGETリクエストとPOSTリクエスト)を通じてトークン(JWTトークンなど)を送信する際のセキュリティに関する推奨事項を探します。

2つのオプションがあります。

  1. HTTP GETリクエストの一部としてヘッダーを介してトークンを送信する
  2. HTTPの一部として要求ヘッダー/ボディを介してトークンを送信するPOST要求

注:接続の保護にはTLSが使用されます。

1
b0n40me

どちらのオプションも基本的には同じですが、リクエストのみが少し異なります。ただし、GETを介して機密データを送信する場合は、さらにいくつかのリスクが伴います。

  • 機密データを含むURLがブラウザに表示され、ユーザーがリンクの共有を間違える可能性があります(単純なコピー/貼り付け、ソーシャルメディアでの共有、オンラインブックマークサービスの使用など)。
  • 機密データは、TLSオフロード後にロギングサーバーによって記録されます。これはPOSTデータでも発生する可能性がありますが、多くのロギングサーバーはデフォルトでURLのみを記録します。

選択肢がある場合は、GETの代わりにPOSTを使用してください。OWASPトップ10では Session Management についても推奨されます。 URL:セキュリティトークンも同様の目的で使用されるため、セキュリティトークンについても言えます。

1
Demento

典型的なケースは、Authorizationヘッダーを介してJWTトークンを送信することです。

多くのサーバー側コンポーネントがヘッダーの長さを制限しているため、トークンのサイズが大きすぎる場合、リクエスト本文を介してトークンを送信する必要がある場合があります(SOで この質問 を確認してください)。この場合、POSTのみを使用する必要があります。GETリクエストの場合、トークンはブラウザーのURL履歴またはURLをログに記録するコンポーネントに開示される可能性があるためです。

したがって、多くのサーバー側またはプロキシが気に入らないため、JWTトークンのサイズを低く保つことをお勧めします。

0
bhorkarg