コンテンツへスキップ
uencoder

CORS を安全に実装する

CORS(Cross-Origin Resource Sharing)は、オリジンをまたぐリクエストを制御付きで許可します。オリジン、メソッド、ヘッダー、資格情報の安全な設定方法を学びましょう。

  1. 1

    CORS は、あるオリジンのブラウザが別のオリジンのリソースをリクエストすることを許可します。サーバーは Access-Control-Allow-Origin(許可オリジン)、Access-Control-Allow-Methods(許可 HTTP メソッド)、Access-Control-Allow-Headers(許可リクエストヘッダー)、Access-Control-Allow-Credentials(Cookie の可否)で応答します。プリフライトリクエスト(OPTIONS)が、実際のリクエストの前に権限を確認します。

  2. 2
    URL パーサー →

    Origin ヘッダーをパースして、リクエスト元のオリジンを検証します。許可オリジンのホワイトリストと比較してください。Access-Control-Allow-Origin: * を Access-Control-Allow-Credentials: true と併用してはなりません。無効であり、ブラウザが拒否します。特定のオリジンをそのまま返してください:Access-Control-Allow-Origin: https://example.com。

  3. 3
    ハッシュ計算ツール →

    動的なオリジン検証には、オリジンをハッシュ化して許可オリジンのハッシュ集合と比較します。生のオリジンを設定に保存せずに済み、O(1) の検索が可能です。ハッシュには SHA-256 を使ってください。または、ワイルドカードサブドメイン(*.example.com)には正規表現やプレフィックスマッチを使います。

よくある質問

CORS の *(ワイルドカード)を使うべきですか?
クレデンシャルなしのパブリック API のみで使えます。Access-Control-Allow-Origin: * では Cookie が送信されず(Access-Control-Allow-Credentials は false でなければならない)、すべてのオリジンが API にアクセスできます。認証や機密データを伴う API では、許可オリジンを明示的に指定してください。* をクレデンシャルと併用してはなりません。ブラウザが拒否します。
CORS プリフライトとは何ですか?
「単純でない」リクエスト(カスタムヘッダー、GET/POST/HEAD 以外のメソッド、form/text 以外の Content-Type)に対して、ブラウザは最初に OPTIONS リクエスト(プリフライト)を送ります。サーバーは許可メソッド、ヘッダー、オリジンで応答します。プリフライトが通れば、実際のリクエストが送られます。単純なリクエスト(カスタムヘッダーなしの GET)にはプリフライトは不要です。

このタスクを解決するワークフロー

コンテンツのハッシュと Base64 エンコード
入力のハッシュを計算し、コンパクトな転送のためにハッシュダイジェストを Base64 としてエンコードする。
パイプライン
テキストのハッシュと整合性検証
入力テキストのハッシュを計算し、期待されるハッシュと比較して整合性を検証する。
パイプライン
テキストのハッシュと CRC32 チェックサム検証
データ整合性検証のために、暗号学的 SHA-256 ハッシュと CRC32 チェックサムの両方を計算する。
パイプライン
MD5 ハッシュ後に Base58 エンコード
MD5 ハッシュを計算し、コンパクトな表現のために Base58 としてエンコードする。
パイプライン
マルチハッシュ速度比較
入力をハッシュし、複数のハッシュアルゴリズムをベンチマークして速度と出力を比較する。
パイプライン
パスワード生成とハッシュ
ランダムパスワードを生成し、安全な保存のためにハッシュする。
パイプライン
Punycode デコードと URL 解析
Punycode ドメインをデコードし、その後完全な URL を解析する。
パイプライン
SHA3-256 ハッシュと CRC32 チェックサム
SHA3-256 ハッシュを計算し、二重整合性検証のために CRC32 チェックサムを計算する。
パイプライン
SHA-512 ハッシュ後に Hex エンコード
SHA-512 ハッシュを計算し、可読性のために Hex としてエンコードする。
パイプライン
テキスト反転とハッシュ
テキストを反転し、その後反転結果の SHA-256 ハッシュを計算する。
パイプライン
テキストスクランブルとハッシュ
テキストをスクランブルし、その後スクランブル結果をハッシュする。
パイプライン
URL デコードと解析
URL デコードし、その後 URL を構成要素に解析する。
パイプライン

関連ツール