【スポンサーリンク】

WordPressにSVG画像をアップロードできるようにした(functions.php)

WordPressにSVG画像をアップロードできるようにした(functions.php)
  • WordPressではセキュリティ上の理由からSVGファイルのアップロードが制限されています。
  • functions.phpにカスタム関数を追加すれば、ブログエディタでのSVGアップロードを許可できます。
  • ただし、アップロードを許可する場合、リスクも認識しておくことが大事です。
\記事が役に立ったらシェアしてね/
【スポンサーリンク】

1. 「このファイルタイプ(SVG)をアップロードする権限がありません」

WordPressにSVGファイルをアップロードしようとしたらエラーになりました。

このファイルタイプをアップロードする権限がありません。

functions.phpを編集すれば、ブログエディタでのアップロードを許可できます。


function add_svg_file_types_to_uploads($file_types) {
	if ( ! isset($file_types['svg']) ) {
		$file_types['svg'] = 'image/svg+xml';
	}
	return $file_types;
}
add_filter('upload_mimes', 'add_svg_file_types_to_uploads');

“upload_mimes”にフィルターを追加して、SVGを許可する処理を追加しました。

2. どうしてSVGのアップロードは制限されていたの?

これは、セキュリティのための制限です。
SVGには悪意のあるコードを埋め込まれている可能性もあるからです。

SVG画像は通常の画像ファイルとは異なり、XMLベースで構成されています。
そのため、SVGファイル内にHTMLやJavaScriptのコードを埋め込むことが可能なのです。

2-1. HTMLスマグリングのリスク

この特性を悪用した攻撃の例として、「HTMLスマグリング」があります1

例えば、ある攻撃者がSVG画像ファイルの中にJavaScriptコードを隠し込みました。
そのコードは、受信者のコンピューター上で悪意のあるプログラムをダウンロードし実行する働きをします。

そして、このSVG画像が添付したメールを送りつけます。
SVG画像は一見すると普通の画像ファイルに見えます。
もし、受信者がその画像を開くと、隠されていたJavaScriptコードが実行されてしまいます。

2-2. XSS(クロスサイトスクリプティング)のリスク

SVG画像はこのXSS攻撃に悪用される可能性があります。

「XSS(クロスサイトスクリプティング)」は、Webアプリケーションの脆弱性を利用した攻撃の一種です。

例えば、悪意のあるユーザーが、JavaScriptコードを含むSVG画像をWordPressサイトにアップロードします。

<svg xmlns="http://www.w3.org/2000/svg">
  <script type="text/javascript">
    alert("XSS攻撃が成功しました");
  </script>
</svg>

このSVG画像がWebページに表示されると、ブラウザは埋め込まれたJavaScriptを実行してしまいます。
つまり、サイトを訪れた他のユーザーのブラウザ上で、攻撃者が用意したスクリプトが動作してしまうのです。

上記のスクリプト例では、”XSS攻撃が成功しました” という画面が表示されるだけです。
しかし、スクリプトによってはユーザーの個人情報を盗まれたり、マルウェアがダウンロードさせられたりする可能性があります。

XSS攻撃を防ぐには、SVGファイルのアップロードを制限するのが基本です。
また、アップロードされたSVGファイルの内容を適切に有害なコードを取り除く処理(サニタイズ)したりすることも重要です。

さらに、Content Security Policy (CSP)を適切に設定することでも、不正なスクリプトの実行を防ぐこともできます。

XSS(クロスサイトスクリプティング)のリスク

このような攻撃もありうるので、不審なSVGファイルの取り扱いには注意が必要なのです。

こちらもどうぞ。
[Cocoon] サイトロゴのリンク先をページ種類で変えた(WordPress)
[Cocoon] サイトロゴのリンク先をページ種類で変えた(WordPress)
Cocoonテーマでサイトロゴのリンク先を変更したいと思って、 functions.phpをカスタマイズしました。 add_filterで「'mobile_header_site_logo_url'」の処理で条件分岐するようにして、記事ページとトップページではブログ一覧に移動するように変更しました。 ロゴのリンク先を分岐させたい サイト上のロゴを押したとき、通常はトップページに移行します。しかし、記事上に限ってはブログ一覧ページに移行するように変更しようと思います。 以下のコ...

ウェブページのスクリプトがマルウェアを「組み立てる」危険とは?【HTMLスマグリング】
ウェブページのスクリプトがマルウェアを「組み立てる」危険とは?【HTMLスマグリング】
Microsoft Security Intelligenceによると、近年 「HTMLスマグリング(HTML Smuggling:HTMLの密輸)」というサイバー攻撃の手法が増えているそうです。 「ウェブページのJavaScriptが、コンピュータ内にマルウェアを構築する」という話を見て、「ウェブページを見るだけで、マルウェアが保存されてしまうのか」と思ってびっくりしました。ただ、「見るだけで感染する」というわけではなさそうです。 注意点は「フィッシング詐欺」と一緒。 怪し...

テキストから図解を生成するNapkin AI
テキストから図解を生成するNapkin AI
「Napkin AI」は、入力された文章から図解を自動生成するAIツールです。 生成された図解は編集可能で、画像やSVGファイルとしても保存したり、クリップボードにコピーしたりできます。 現時点ではひな型の数が限られていますが、高機能なSmartArtのような便利なツールとして利用できます。 「Napkin AI」と「Auto Spark」ボタン 「Napkin AI」は、入力した文章を元に図解を作ってくれる生成AIです。 (参考) 基本的な編集画面は、「白紙のノート」のよう...

(補足)

  1. SVG 画像を悪用する HTML スマグリング – Cisco Japan Blog (2022-12-21)
QRコードを読み込むと、関連記事を確認できます。

WordPressにSVG画像をアップロードできるようにした(functions.php)
【スポンサーリンク】
タイトルとURLをコピーしました