data:image/png;base64, はプレフィックスであり、完全なイメージではありません。これはインライン リソースを導入します。スキームはデータ、宣言されたメディア タイプは image/png、マーカーは次のペイロードが Base64 を使用することを示します。カンマはメタデータとデータの間の境界です。
構造を読む
data:[media-type][;base64],payload
data:text/plain;base64,SGVsbG8=
data:text/plain,Hello%20world
最初の例は、Hello から Base64 までのテキストを表します。 2 つ目では、代わりにパーセント エンコードを使用します。データ URI パーサーは、デコーダーを選択する前にメタデータを検査する必要があります。コロン、セミコロン、カンマはペイロード文字ではないため、完全な URI を生の Base64 デコーダーに送信すると失敗します。
カンマごとではなく、最初のカンマで分割します。残りのデータ自体には、特に Base64 以外のテキスト URI にカンマが含まれている可能性があります。オプションのメディア タイプ パラメーターは、Base64 マーカーの前に指定できます。メディア タイプを省略した場合、データ URL 形式にはデフォルトのテキスト タイプと文字セットが含まれます。そのデフォルトでは、任意のバイナリ バイトが読み取り可能なテキストに変換されません。
MIME ラベルはクレームです
誰でも置ける image/png 接頭辞で。ラベルは、バイトが PNG を形成していることを証明するものではありません。署名を比較し、実際の画像デコーダに結果をロードするよう依頼します。同様に、PDF ヘッダーは認識の手掛かりにすぎません。完全な PDF パーサーは依然としてドキュメントを拒否する可能性があります。
変化する image/png に image/jpeg 画像は変換しません。変換とは、ソース画像をデコードし、新しいファイルを宛先形式でエンコードすることを意味します。これにより、透明度、メタデータ、品質、サイズが変更される場合があります。これらの違いが重要な場合は、オリジナルを保持してください。
リソースを実行せずに回復する
まず解析して検査します。テキストはテキストとして表示でき、サポートされているラスター イメージはイメージ要素でプレビューできます。任意の HTML または SVG マークアップをドキュメントに挿入しないでください。データ URL は、画像だけでなくアクティブ コンテンツも表すことができるため、その自己完結型の性質は安全性を保証するものではありません。
ファイルのダウンロードでは、デコードされたバイトを保存し、確認された形式情報に基づいて適切な拡張子を使用します。診断レポートの場合、宣言されたタイプと検出されたタイプを個別に表示します。これにより、不一致が安心できるファイル アイコンの背後に隠れるのではなく、表示されるようになります。 Data URL の構文とそのデフォルトについては、「 MDN: データ URL。