23 ポイント 投稿者 GN⁺ 2024-05-29 | 5件のコメント | WhatsAppで共有
  • TL;DR : API 呼び出しを HTTP から HTTPS にリダイレクトするのではなく、失敗を示すべき。HTTP を完全に無効化するか、明確な HTTP エラーレスポンスを返し、暗号化されていない接続で送信された API キーは失効させること。残念ながら、現在は多くの有名な API プロバイダーがそうしていない。

背景

  • Web ブラウザが HTTP URL にアクセスすると、サービスはしばしばそのリクエストを HTTPS ページへリダイレクトする。
  • 初期の HTTP トラフィックは暗号化されておらず、ネットワーク中間者(MITM)攻撃に脆弱。
  • HSTS(HTTP Strict Transport Security)のような技術が導入され、セキュリティが強化されてきた。

ちょっとしたタイプミスの危険性

  • 作業中、サードパーティ API との統合過程で API のベース URL を https:// の代わりに http:// と誤入力した。
  • Node.js の fetch が静かに HTTPS へのリダイレクトに従った。
  • API キーが平文で送信され、セキュリティリスクが発生しかねなかった。
  • コードレビュー中にこの誤りを発見し、問題を解決した。

フェイルファストの原則

  • API が HTTP リクエストを HTTPS にリダイレクトすると、タイプミスを見落としやすい。
  • フェイルファストの原則に従うべき: 暗号化されていない API 呼び出しは明確に失敗すべき。
  • API サーバーの HTTP インターフェースを無効化するか、HTTP リクエストに対してエラーメッセージを返すのが望ましい。

他の API の事例

  • 複数の有名な API は、HTTP リクエストに対して 403 エラーメッセージを返すか、HTTP インターフェースを無効化している。
  • しかし一部の API は、いまだに HTTP から HTTPS へリダイレクトしている。

ベストプラクティスの必要性

  • ユーザー向けアプリケーションでは、HTTP から HTTPS へのリダイレクトは一般的。
  • API の場合、HTTP から HTTPS にリダイレクトすることは、むしろ有害になりうる。
  • OWASP のようなセキュリティプロジェクトで、API に関する明確なガイドラインが必要。

結論

  • API は HTTP から HTTPS にリダイレクトするのではなく、暗号化されていないリクエストを明確に失敗させるべき。
  • API キーが暗号化されていない接続を通じて送信された場合は、ただちに失効させるべき。
  • API セキュリティのベストプラクティスを更新し、明確な指針を提供する必要がある。

GN⁺ の意見

  • セキュリティ強化の必要性: API セキュリティは非常に重要であり、HTTP から HTTPS へのリダイレクトはセキュリティ上の脆弱性を招く可能性がある。
  • フェイルファストの原則: 開発初期の段階でエラーを発見して修正できるよう、フェイルファストの原則に従うことが重要。
  • ベストプラクティスの更新: OWASP のようなセキュリティプロジェクトは、API セキュリティに関する明確なガイドラインを提供すべき。
  • キー失効の自動化: 暗号化されていない接続を通じて送信された API キーは自動的に失効されるべき。
  • 他の API の事例を参考に: 他の API のセキュリティ事例を参考にして、自身の API セキュリティを強化する必要がある。

5件のコメント

 
wkang586 2024-06-03

法令で規制すべき領域のようですね。
ひとまず、メモ… API では HTTPS へのリダイレクト禁止

 
koxel 2024-05-31

技術的には正しい内容ですが、
大半の企業クライアントではセキュリティ要件として、http でアクセスされた場合は必ず https にリダイレクトを返すよう方針化されています。
また、自社サイトを利用する顧客にエラー画面を見せること自体を嫌うため、自社サービスを運営しているところでなければ、納品する側にとっては別世界の話という感じでしょうか..

 
thxgeeknews 2024-05-29

作業中、サードパーティAPIとの統合プロセスで、APIのベースURLを "http://"; ではなく "https://"; と誤って入力していた。
http <-> https が入れ替わっているようですね。

 
xguru 2024-05-29

うわっ、AIがこんなミスをするなんて(笑)。修正しておきました。

 
GN⁺ 2024-05-29
Hacker Newsの意見
  • OpenAI APIがHTTPリクエストに対して403エラーを返すよう更新された。
  • Stack Exchange APIは、HTTPで送信されたAPIキーを無効化し、エラーメッセージを返す方式が望ましい。
  • HTTPからHTTPSへのリダイレクト設定を自動で行わないよう注意すべきである。
  • cURLのデフォルト設定が自動リダイレクトを行わないのは意図的であり、良いデフォルト値である。
  • HTTPアクセスを遮断し、HTTPSのみを提供することが重要である。
  • "Provider B" がMITM攻撃はプログラムの対象範囲外だと返答したのは驚きである。
  • HTTPスニッフィングがMITM攻撃の一種なのかという疑問がある。
  • HTTPSとSVCB DNSレコードが、時間の経過とともに従来のHTTPサーバーのリダイレクトに取って代われることを望む。
  • APIプロバイダーは過去のHTTPアクセスログを確認し、平文HTTPの利用がどれほど広く残っているかを点検すべきである。
  • 多くのAPIは、自動HTTPSリダイレクトをデフォルトルールとして設定するWebアプリケーションファイアウォールの背後でホスティングされている。
  • APIはHTTPからHTTPSへ自動リダイレクトすべきではなく、クライアントライブラリもデフォルトでリダイレクトに従うべきではない。
  • HTTPからHTTPSへのリダイレクトを設定することは、長期的にはトラフィック削減に役立つ。
  • インフラでは、URLのタイプミスによる問題を素早く解決するためにリダイレクトを設定することが多い。