SVGファイルのスクリプトと隠れたコードを削除
07 そもそも写真形式ではない——まったく異なるリスク
本サイトの他のあらゆる形式は、バイナリコンテナに封入されたラスタライズ済みのピクセルです。SVGは違いま
す。それは図形を記述する純粋なXMLテキストであり、XMLは<script>要素、インラインのイ
ベントハンドラー(onload=、onclick=)、あるいはXXEエンティティ宣言を含むこと
ができます——これはファイルと一緒に運ばれるただのデータではなく、本物のコードです。ここではEXIF/GPSの
リスクはほとんどありません(SVGはカメラの出力ではないため)が、アクティブなコンテンツによるリスクは実
際に存在し、この形式に特有のものです。
詳しく見る:なぜSVGは他の形式のように「クリーニング」できないのか
任意のXML/スクリプトのうち、安全に保持できる部分集合というものは存在しないため、「悪い部分だけ」を
取り除くということができません——だからこそ本ツールはそれを試みません。あらゆるSVGはラスタライズさ
れます。<script>の内容を決して実行せず、レンダリング中にネットワークリクエストを
一切発生させない、安全性を強化したレンダラーによってフラットなピクセルへとレ
ンダリングされ、そのピクセル結果が他のあらゆる形式と同じ再構築プロセスを経ることになります。出力は
常にPNGです——「無害化されたSVG」というものは、意図的にここには存在しません。その理由は
比較ページで扱われています。
ラスタライズの前に実際に何が報告されるか
レポートには、破棄される前に発見された内容が正確に示されます——<script>要素、
javascript: URI、インラインのイベントハンドラー属性、<foreignObject>要
素、DOCTYPEエンティティ宣言など——単に「クリーニング済み」という一般的な表示ではなく、ファイルの中に具体
的に何があったのかをあなたが確認できるようにするためです。