web-dev-qa-db-ja.com

REST APIでHTTPSのみを強制する

REST個人情報を取り込む可能性のあるAPIを開発しています。それを安全にするために、HTTPSを使用してのみAPIにアクセスできるようにしたいと思います。基本的に、HTTPSのみを強制するための最良の方法は何ですか? ?

安全でないHTTPリクエストが行われたときに私が考えていたいくつかのことを次に示します。

  • HTTPステータスコードを403 Forbiddenに設定します
  • Strict-Transport-Securityヘッダーを送信する
  • Locationヘッダーを使用してHTTPS URLにリダイレクトする
1
ub3rst4r

RESTプライベート情報を取り込む可能性のあるAPIを開発しています。セキュリティを確保するために、HTTPSを使用してのみAPIにアクセスできるようにしたいと思います。基本的に、HTTPSのみを強制するための最良の方法は何ですか? ?

APIを実行している場合、最善の方法はHTTPをオフにするで、HTTPSインターフェースのみを公開することです。

  • ダウンレベルのHTTPは、貧弱な人間のための松葉杖です。 UIサイトを実行している場合、人間が暗号化されていないHTTPバージョンにアクセスしようとするのを期待する必要があります。それは、そのようなものだからです。そのため、リダイレクトする多くの凝った方法があります。 APIを使用すると、アドレスを指定するブラウザーを使用するユーザーではないため、人々にHTTPSへのコードを要求し、HTTPを提供しないようにすることができます。
  • Punyの人間には、少なくともブラウザが機能します。ブラウザは、あなたが言及したきちんとしたもの(ステータスコード、ヘッダー)をすべて考慮に入れようとします。 APIプログラマーがAPIクライアントを平手打ちするとき、彼らはしばしばそのようなことを無視するか、創造的です。 RESTfulの8行Python StackExchangeから引き出されたものは、エラー処理やRFC準拠のヘッダーヒューイングを強調するものではありません。HTTPプロトコルとヘッダーヒントに応答することは信用できません。とリダイレクト。
  • APIが暗号化されていない入力を押し出す可能性は少ないTCP HTTPSを実行している場合...しかし、そうではありません(3WHSの後の最初のパケットは、TLS CLIENT_HELLOの代わりにデータを積んだJSONリクエストである可能性があります...しかし、応答が返されない場合(そして、返されない場合)、停止することを学習しますここでのレッスンは、APIクライアントプログラマーが正しいことを行うと信頼しないでください。また、403 Forbiddenであっても、暗号化を無視して正当な応答を返さないようにしてください(許可される場合があります)。 HTTPをサポートする場合)。
  • HTTPステータスコードを403 Forbiddenに設定します
  • Strict-Transport-Securityヘッダーを送信する
  • Locationヘッダーを使用してHTTPS URLにリダイレクトする

HTTPサイトがあり、ブラウザを介して人間をプッシュしたい場合、これらはすべて優れた機能です。しかし、ブラウザではなくAPIを扱う場合、それは、真実である可能性が低く、そもそも必要性が低い一連の仮定です。

5
gowenfawr