ビデオと字幕 · ダイレクト メディア ダウンローダー
署名付き URL と有効期限切れ URL: 直接リンクが明日機能しなくなる理由
· 背景
URL セキュリティ ダウンロード
多くの直接リンクでは、クエリ文字列に署名と有効期限が含まれています。この投稿では、署名付き URL がどのように機能するか、CDN とストレージ サービスが署名付き URL を使用する理由、および失敗する前に署名付き URL を認識する方法について説明します。
金曜日にはリンクが機能していましたが、月曜日にはエラーが返されました。これが、ほとんどの「壊れた」直接リンクの背後にあるパターンです。
金曜日にリンクが成功しても、ファイルが移動せずに月曜日に HTTP エラーが返されることがあります。クエリには、試行の間に有効期限が切れる時間制限付きの承認が含まれる場合があります。
ToolAcre は、読み取り可能な非成功ステータスをレポートし、アドレスの有効期限が切れているか、移動されているか、またはサインインが必要である可能性があることを示します。 HTTP 応答が利用可能な場合、有効期限を CORS として再解釈しません。有効なリンクは共有後、受信者が使用を開始または終了する前に期限切れになる可能性があるため、大規模な転送はこのタイミング ギャップに対して特に脆弱です。録画が長いと、転送の共有、開始、完了の間に認証が失効する可能性があるため、このタイミングのリスクが増大します。
署名付き URL とは — 通常のファイル パスに署名、有効期限、場合によっては許可される IP がすべてクエリ文字列に含まれます。
署名付き URL は、通常のリソース パスと、サービス提供システムが認可を検証するために使用する値を組み合わせます。これらは、署名、有効期限、資格情報の範囲、ポリシー、またはクライアント制限を表す場合があります。
パラメータ名とエンコーディングはプロバイダー固有です。ブラウザはそれらをクエリ データとして扱いますが、サーバーはリクエスト時にそれらの組み合わせが有効かどうかを判断します。一部のスキームはメソッドまたはヘッダーもバインドするため、プロバイダーは GET を許可しても HEAD を拒否する場合があります。その結果を説明できるのは、文書化された署名アルゴリズムのみです。一部のプロバイダーには、検証にメソッドまたは選択されたヘッダーが含まれており、同じ表示クエリの下で HEAD を拒否しながら GET を許可します。
ストレージ サービスと CDN がそれらを使用する理由 — プライベート ファイルを公開したりログインを要求したりせずに共有する
ストレージ サービスと CDN は、パスを永続的に公開したり、ダウンロードごとに対話型ログインを添付したりすることなく、署名付きアドレスを使用してプライベート オブジェクトを共有します。
したがって、ライブ リンクの所有は機密性が高い場合があります。信頼できないリレーに貼り付けたり、スクリーンショットを公開したり、承認されたワークフローを超えて共有メモに残したりしないでください。有効性が短いため、リンクが漏洩した場合の露出が軽減されますが、失効ログとアクセス ログはダウンロードされた URL 自体の機能ではなくプロバイダーの機能のままです。有効性が短いため漏洩による危険が軽減されますが、失効とアクセス ログは発行元プロバイダーの機能のままです。
クエリ文字列の読み取り — 一般的な URL 形式での有効期限タイムスタンプと署名パラメータの検出
有効期限、署名、トークン、ポリシー、またはベンダープレフィックス付き認証を示唆するクエリ名を探します。エポックのような値は期限を表す場合がありますが、変換する前に文書化する必要があります。
ToolAcre のノーマライザーは、`token`、`expires`、`signature`、および X-Amz スタイルのフィールドを意図的に保持します。承認を削除するとアドレス指定されたリクエストが変更されるため、既知の分析形式のキーのみが削除されます。不透明に見える値は、名前が明らかでない場合でも、署名された正規リクエストの一部である可能性があるため、見慣れないパラメータを安易にデコードしたり削除したりしないでください。不明なパラメータは、その名前がセキュリティに関連していないようであっても、正規署名に参加している可能性があるため、変更せずに保存してください。
実用的な例: タイムスタンプ付きのストレージ リンク — いつ期限切れになるか、その後エラーがどのようになるかを解明する
プロバイダーのドキュメントで有効期限パラメーターがエポック秒として定義されているとします。文書化されたルールに従って変換し、大規模な転送を開始する前に現在の UTC 時間と比較します。
期限を過ぎると、ホストは 403、別のエラー、またはリダイレクトを返す可能性があります。普遍的な応答形状はありません。具体的な証拠は、そのプロバイダによって提供されるステータスと本文であり、でっち上げられたメッセージではありません。ホストが構造化されたエラー本文を提供する場合は、それを生成した署名付きアドレスを公開せずに、それを所有者のために保存します。構造化されたエラー応答を生成した署名付きアドレスを広範な開示から保護しながら、所有者に対してはすべて保持します。
これでカバーされないもの — リンクの更新。ファイルの所有者のみが実行できます。
ダウンローダーはアドレスを更新、再署名、更新、または拡張できません。ソースを管理する当事者またはその承認された共有システムのみが、別の有効なリンクを発行できます。
また、資格情報が省略されているため、サインインしたセッションも保存されません。アクセスに URL 認証ではなくアカウント Cookie が必要な場合、そのファイルはこの製品の設計の範囲外です。タイムスタンプを手動で変更すると、サーバー検証に期限が含まれるため、ほとんどの署名が無効になります。それは拡張メカニズムではありません。タイムスタンプを変更すると、通常は検証が無効になります。これは、期限自体が編集可能なメタデータとして機能するのではなく、署名に寄与するためです。
要点: リンクが有効な間にダウンロードする — ダイレクト メディア ダウンローダーの URL チェックと通知されたフェッチが期限切れのリンクにどのように適合するか
承認されたリンクが有効で、ファイルがブラウザーのワークフローに適合している間にダウンロードしてください。ローカル検証により、初期アドレスがスキームとホスト ポリシーを満たしていることが確認され、明示的なリクエストによりオリジンがその署名を評価できるようになります。
ホストのアナウンスでは、トークンが有効なままであるかどうかは明らかにされていません。 Check link は HEAD での到達可能性をテストできますが、一部のプロバイダーは HEAD を GET とは異なる方法で処理するため、これは更新または保証ではありません。アーカイブ ワークフローの場合は、リンクの発行を転送ウィンドウと調整し、送信者の正式なコピーを削除する前に保存されたバイト数を確認します。計画された転送ウィンドウに合わせて発行を調整し、送信者の正式なコピーを廃止する前に完成したアセットを確認します。