このスタックリンク に書かれている答えを使って私のWordpressロゴのSVGアップロードを有効にしました。これはそのような情報源の1つです。
メディアアップローダではどのようなセキュリティ上の理由からsvgsがブロックされていますか?
私の質問は3つあります。
1)私が理解しているように、私が使ったハック( 上のリンク に基づく)を使うと、ロゴのSVGをアップロードすることができます。また、エンドユーザー(管理者以外)が悪意のあるSVGをアップロードして、ファイルのアップロードを許可した場合に自分のサイトに大きな損害を与える可能性があるということですか
2)悪意のあるSVGファイルをユーザーがアップロードすることを許可している場合、自分のサイトを攻撃から守るために使用できる他のコードはありますか?
3)私が使用したSVG修正によって導入された脆弱性がある場合、ハッカーはどんな種類のダメージを与えることができますか?悪意のあるスクリプトを実行するために必要なコマンドの種類は何ですか?
ありがとうございます。
この記事 にはあなたの質問に対する素晴らしい答えがたくさんあります。私はこの問題の規模についてもっと知るためにそれをチェックアウトすることを強く勧めます、しかし私は簡単な要約を与えることができます。
SVGはXMLベースであるため、何が悪意がないのかを解読するのは非常に困難です。一方ではXSS攻撃に晒され、もう一方では実際にDoS攻撃を仕掛ける可能性があります。
彼は このWordpress Tracのチケット SVGのセキュリティについて長い間議論していますが、サイト内で終わりはありません。
とにかく、あなたの質問に答えるために:
私の直感的な反応は「いいえ」ですが、本当にそれはあなたのエンドユーザーができることにかかっています。彼らが何かをアップロードするためのアクセス権を持っていなければ、それで大丈夫です。もしそうなら、それはあなたがあなたのフロントエンドのファイルアップロードシステムをパースするのに使っているものに依存します。たいていの場合、実際にWPアップロードできる機能を持つユーザーと、悪意のあるものをアップロードしないことを信頼しているかどうかという点です。
SVG Sanitizer というライブラリに基づいた Safe SVG というプラグインがあります。それが何を防ぐことができるかどうかについてのより良い理解を得るために両方のreadmeをチェックしてください。
損害は情報をスキミングすることからあなたのホスティングサーバーをダウンさせることまで何でもあり得ます。私がリンクした元の記事に戻ります。 SVGを開いたときに起こり得ることの深さは、かなりオープンエンドです。
SVGは将来のものであり、私が構築するすべてのサイトでそれらを使用していますが、テーマにハードコーディングできるという理由だけでアップロードすることはできません。
より流動的にする必要があるサイトへのSVGアップロードを許可しましたが、一方では実際に必要とされた回数を数えることができるので、デフォルトでは有効になっていません。
他の回答で説明されているように、ユーザーがSVGファイルをアップロードすることを許可することは一般的にセキュリティリスクとなる可能性がありますが、WordPressの特定の問題ではありません。ただし、カスタマイザ設定を使用しているので、SVGのアップロードをすべてのユーザに許可するのではなく、テーマカスタマイザにアクセスできるユーザにのみ許可します。
デフォルトでは、 edit_theme_options
ケーパビリティ を持つユーザだけがテーマカスタマイザにアクセスでき、デフォルトではadminだけがそのケーパビリティを持ちます。したがって、この文脈では、リスクは本当に最小限です。管理者は彼らが何をしているのか知っているはずです。
また、どのユーザーがカスタマイザセクションと設定にアクセスできるかを正確に制御できます _は、 WP_Customize_Manager::add_section()
および WP_Customize_Manager::add_setting()
メソッドのcapability
引数を使用しています。
$wp_customize->add_section( 'mytheme_options',
array(
'capability' => 'edit_theme_options', // Change this if you wish
)
);
$wp_customize->add_setting( 'some_setting',
array(
'capability' => 'edit_theme_options', // Change this if you wish
)
);