web-dev-qa-db-ja.com

SVGのJSを制限する

JSがSVG内で実行されたり、JSがSVGから取り除かれたりするのを防ぐ方法を知っている人はいますか?私の使用例では、画像をSVGとして保持し、JPGに変換しない方がよいでしょう。スクリプトタグとオン属性を削除することを検討しましたが、ブラックリストのアプローチは避けたいと思います。あるいは、すべての属性とタグのホワイトリストアプローチを実行することを検討しましたが、リストは膨大です。これにアプローチする方法についてのアイデアはありますか?

8
winhowes

JSがSVG内で実行されないようにする方法を誰かが知っていますか

SVGを画像として埋め込むと、含まれているJSが実行されないことが保証されます。

<img src="https://example.com/dangerous.svg">

副作用として、これはSVGが外部リソースをロードすることも防ぎます。 (参照: 画像としてのSVG

気になる場合は、iframeサンドボックスを使用すると、スクリプトコードが実行されなくなります。

<iframe sandbox src="https://example.com/dangerous.svg"></iframe>

ユーザー提供のSVGをホストしている場合は、XSSがトリガーされるため、ユーザーがブラウザーで直接(URLにhttps://yoursite.example/user-images/dangerous.svgと入力して)表示できないことを確認してください。代わりに、信頼できないファイルを添付ファイルとして提供する必要があります。 (参照: ユーザー指定のMIMEタイプを保存して再生しても安全ですか?

5
Arminius

SVGを解析および変換でき、スクリプトを削除できる既存のライブラリ/ソフトウェアツールを使用します。セキュリティの重要なルールの1つは、回避できる場合は、ホイールの再発明を回避することです。

使用するライブラリはこのサイトの範囲外ですが、 http://stackoverflow.com/ 、または https://softwarerecs.stackexchange.com/ 、特にタグ svgの下

いつものように、質問する前に、サイトの質問ガイドライン(例 質問に「十分な情報」を含めるには何が必要ですか? )を読んで(注意して)ください。

2
sleske