WordPressサイトでSVGやWEBPなどの画像ファイルを安全にアップロードするためには、必要なファイルタイプのみをMIMEレベルで許可し、SVGファイルはアップロード前に必ずクリーンアップ(サニタイズ)し、アップロード権限を信頼できるユーザーに限定し、サーバー側で悪意のあるファイルの実行をブロックすることが基本です。WEBP画像は最新のWordPressでは多くの場合そのまま利用できますが、SVGはコードを含められるためデフォルトでブロックされています。そのため「許可を開く」だけでなく、悪意のあるスクリプトや偽拡張子、権限外ユーザーによるアップロードリスクを減らすのがWordPressの安全なファイルアップロードの本質です。
SVGとWEBPは、サイトのパフォーマンスやデザイン面で非常に優れたフォーマットです。WEBPはJPEGやPNGと比べてファイルサイズが小さく、ページ表示速度やCore Web Vitals改善、帯域節約につながります。SVGはロゴやアイコン、ベクターイラストで鮮明な描画が可能ですが、XMLベースなので内部にJavaScriptや外部リンク、悪意あるコマンドが埋め込まれる可能性もあります。SVGの許可設定時にセキュリティ層を省略すると、サイト全体や訪問者の安全性に重大なリスクをもたらします。
本ガイドでは、WordPressでSVGとWEBPのファイルアップロードを安全に許可する方法、必要な設定、プラグインとコードによるアプローチの違い、サーバー側の対策、そして実際にサイト上で使えるチェックリストを紹介します。画像を多用するサイトなら、信頼できるインフラの選択も重要です。WordPressに最適化されたサービスについては WordPressホスティング ページも参考にしてください。
WordPressが特定ファイル形式をブロックする理由とは?
WordPressのメディアライブラリはセキュリティの観点から全てのファイルタイプを受け付けません。標準ではJPG、PNG、GIF、PDF、DOCXなど一般的で比較的安全な形式のみ許可されます。一方SVGなどは、拡張子が無害に見えてもスクリプトや悪意あるコンテンツを含むことがあるためブロックされます。「このファイルタイプはアップロードできません」というエラーの主な原因です。
ファイルアップロードのセキュリティは三層構造です。一層目はWordPressによるMIMEタイプチェック。二層目はユーザーの権限。三層目はサーバーでのファイル処理です。functions.phpに数行書くだけでは全てを解決できません。特にSVGでサニタイズを省略すると新たな攻撃面が生まれます。
MIMEタイプとは?なぜ重要なのか
MIMEタイプはブラウザやアプリに「このファイルは何か」を伝える識別子です。例えばWEBPならimage/webp、SVGならimage/svg+xmlが一般的です。WordPressはファイルの拡張子とMIME情報を照合し、許可リストと一致するかを判定します。悪意あるユーザーはファイル名を偽装してアップロードを試みる場合があるため、拡張子だけで判断するのは危険です。
SVG・WEBPフォーマットのメリットとリスク比較
どちらもWebパフォーマンス向上に役立ちますが、セキュリティ上の性質は異なります。WEBPは画像最適化用途が主ですが、SVGは「画像+コード」の両方の側面を持つため、より慎重な運用が求められます。下表は各フォーマットごとの主なメリットとリスク、推奨セキュリティ対策をまとめたものです。
| フォーマット | 主なメリット | 主なリスク | 推奨セキュリティ対策 |
|---|---|---|---|
| WEBP | JPEG/PNGより小容量・高速 | 旧サーバー環境での非対応やMIME設定ミス | WordPress・PHPの最新版利用、画像最適化プラグイン |
| SVG | ロゴやアイコンで無限の拡大縮小・鮮明表示 | XSS、外部リソース呼び出し、悪意あるXML | SVGサニタイズ、権限制限、アップロードディレクトリの実行禁止 |
| PNG | 透過・高い互換性 | ファイルサイズが大きい | 必要ならWEBPへ変換 |
| JPEG | 写真用途で幅広い互換性 | 圧縮による画質低下・大容量 | 画質調整・遅延読み込み |
実際の安全な運用はこうです:写真や大きな画像はWEBP、ロゴ・アイコンはサニタイズ済みSVG。SVGを全ユーザーに自由にアップロードさせない。管理者・信頼できる編集者以外は制限する。複数著者や会員制・顧客パネルを持つサイトでは特に注意が必要です。
設定前に必ず確認したいポイント
本番サイトでアップロード設定を変更する前に準備しておくことで、トラブル時の復旧が容易になります。特にテーマファイルを編集する場合は必ずバックアップを取ってから作業しましょう。安全なスタートのため、以下のチェックを推奨します:
- WordPressコアが最新版であることを確認。古いバージョンはメディア処理やファイル検証が異なる場合があります。
- PHPのバージョンがサポート範囲内かつ最新であること。2026年以降、古いPHPはセキュリティリスク。
- サイト全体のバックアップ:データベース、wp-contentディレクトリ、テーマ・プラグインも含む。
- 子テーマを利用。functions.phpを親テーマで編集するとテーマ更新時に消える。
- 権限マトリクスを整理。SVGアップロードを許可するユーザーは最小限に。
- セキュリティプラグインやWAF利用時はファイルアップロード監視が有効か確認。
バックアップや安定稼働のためには高性能なホスティング環境も重要です。リソース制限、隔離、日次バックアップ、マルウェアスキャンなどの機能については Hostragons ウェブホスティング のサービスもご検討ください。
方法1:プラグインでSVG・WEBPアップロードを許可する
技術が苦手な方には、信頼性の高い最新プラグインを使うのが最も安全です。重要なのは、単なるMIME許可だけでなく、SVGのサニタイズや権限制限・ファイル検証機能が備わったプラグインを選ぶことです。「SVG許可だけ」のプラグインは不十分です。
プラグイン選定時の注意点
- 最終更新日が最近であること。1年以上更新されていないセキュリティ系は危険。
- アクティブインストール数やレビューをチェック。
- SVGサニタイズ機能が明記されていること。
- 管理者や特定権限のみにアップロード許可できること。
- WordPress最新版でテスト済みであること。
- 不要な機能でサイトの動作を重くしないこと。
WEBPは最新WordPressなら標準で対応しています。もしアップロードエラーが出る場合は、プラグイン不足よりもサーバーのMIME設定、WordPressやPHP/GD/Imagickのバージョンが古い場合が多いので、まずシステム要件を確認しましょう。
プラグイン運用のセキュアな手順
基本フローは、テスト環境でプラグインを導入し、SVGと必要ならWEBPのみを有効化、SVGサニタイズをONに、アップロード権限を管理者だけに限定し、サンプルファイルで動作確認をします。テスト用に通常SVGとscriptタグ入りSVGを用意し、プラグインが悪意ファイルを拒否・クリーン化できるか確認しましょう。
本番環境移行前にキャッシュをクリアし、メディアライブラリの表示が正しいことを確認。CDN利用時は新しいファイルタイプが正しいMIMEで配信されているかも要チェック。CDNやSSL・安全なトラフィック管理については SSL証明書 や CDNの使用 の記事も参考になります。
方法2:コードでMIMEタイプを追加する
開発者向けには、MIMEタイプをコードで追加する方法もあります。ただしSVGの許可だけでサニタイズを省略するミスが多いので注意。コードによる許可はWEBPのようなリスクの低い形式には有効ですが、SVGの場合は必ず追加のセキュリティ対策が必要です。
functions.phpで許可する仕組み
WordPressではupload_mimesフィルターで許可MIMEリストに新しい形式を追加できます。WEBPはwebp拡張子をimage/webp、SVGはsvg拡張子をimage/svg+xmlとして追加します。ただし親テーマのfunctions.phpに直書きするのではなく、子テーマや専用ミニプラグインで管理するのがベターです。
注意点は二つ。MIMEリスト追加はファイルの安全性を保証しません。テーマ変更時にfunctions.phpの編集内容が消えることもあるので、プロジェクトではsite-specificプラグインが推奨されます。
権限による制限が必須な理由
SVGのアップロード権限を全ユーザーに開放すると、特に複数著者のブログやECサイト、会員制・顧客パネル付きサイトでは危険です。管理者や信頼できる編集者だけに許可しましょう。例えば20人のライターが全員SVGをアップできるニュースサイトなら、一人の脆弱なアカウントがサイト全体の侵入口となる可能性があります。
権限制限はユーザー権限チェックとファイルアップロードフィルターを組み合わせ、指定権限のみで動作させること。管理者以外にも許可が必要な場合は、専用ロールを作り教育済みメンバーのみを割り当てるのが安全です。また二段階認証でアカウント乗っ取りリスクも下げられます。
SVG運用のセキュリティ:「サニタイズなし許可」は絶対NG
SVGは単なる画像に見えてもXMLベースで、scriptやイベントハンドラ、外部リンク、埋め込みデータやリダイレクト等を含む場合があります。ブラウザで実行されるとXSS攻撃が発生し、訪問者のブラウザ上で悪意コードが動作、Cookie盗難やセッション乗っ取り、偽フォーム表示などにつながります。
安全なSVG運用には、デザインツール側でクリーンなエクスポート、不要なメタデータ削除、WordPress側でサニタイズ処理が必須。サニタイズとは、script・foreignObject・危険なイベント属性・外部参照などリスク要素を自動で除去すること。手作業では限界があるため、ルールセットによる自動処理が推奨されます。
安全なSVG活用チェックリスト
- SVGファイルは信頼できるデザインソースのみ利用
- アップロード前に最適化・メタデータ削除
- サニタイズ対応プラグインやライブラリを活用
- SVGアップロード権限は全ユーザーに開放しない
- アップロードSVGが外部URLを呼ばないことを確認
- 不要なSVGは定期的にメディアライブラリから削除
- セキュリティプラグインでファイル変更監視をON
企業サイトではSVGはロゴ、SNSアイコン、決済アイコン、UIシンボルなどに使われます。こうした静的ファイルは頻繁に変更されないため、認証済みSVGセットのみアップし、以降は権限を閉じる運用が最も安全です。
WEBPアップロードとパフォーマンス設定

WEBPはセキュリティよりパフォーマンス重視のフォーマットです。ただしサーバー設定次第で正しく表示されない、MIMEタイプが誤って配信されるケースもあります。WordPress5.8以降はWEBP対応ですが、画像処理用のGDやImagickライブラリもWEBP対応である必要があります。
WEBP利用時は単なるアップロード許可だけでなく、画像最適化戦略を構築しましょう。大きすぎる画像は1920px以上にしない、品質値は75〜85が目安、遅延読み込みも効果的。商品画像やブログヘッダー・バナーなどでWEBPを使えば大幅な表示速度改善が期待できます。特にスマホユーザー比率が高いサイトでは、パフォーマンス向上が直接CVRに影響します。
WEBP運用の実践アドバイス
- 元画像も保存しておく。PNG/JPEGへの再変換も簡単。
- アイコンなど小さい画像はSVGの方が効率的。
- 写真系ページでWEBPを使えばページ容量を25〜50%削減可能。
- CDN利用時はWEBPバリアントの配信が正常かテスト。
- ブラウザの互換性は広がったが、古い環境向けのフォールバックも検討。
パフォーマンス重視のWordPressではホスティングリソースも重要です。CPUやディスクI/O、LiteSpeedなどのサーバー技術は画像系ページで大きな差を生みます。詳細は LiteSpeedホスティング や WordPress加速ガイド をご覧ください。
サーバー側で必要なセキュリティ対策
WordPress側の設定だけでなく、サーバー側の環境も安全性を左右します。アップロード先のwp-content/uploadsディレクトリは通常メディアファイル用ですが、ここでPHPなどの実行ファイルを動作させないことが重要。万が一攻撃者が悪意ファイルを仕込んでも実行できなくなります。
Apache環境ならuploadsディレクトリでPHP実行を禁止する設定が可能。NginxならlocationブロックでPHP実行を止めます。共有ホスティングの場合、一部設定は提供会社側で管理されていることもあります。安全なホスティング環境はWordPressファイルアップロード対策の根幹です。
追加サーバーセキュリティチェック
- ファイル権限設定:ディレクトリは755、ファイルは644推奨
- wp-config.phpなど重要ファイルは書込み不可に
- ModSecurityやWAFでアップロード監視ルールを有効化
- ログを定期チェックし、異常アップロードを監視
- 日次・週次の自動バックアップを設定
- SSLで管理画面やメディアアップロード通信を暗号化
ドメイン・SSL・ホスティングを一元管理できる環境は事業運営の効率化にも有効です。新規サイト立ち上げなら ドメイン検索 や SSL証明書 ページも参考にしてください。
最も安全な設定フロー:ステップバイステップで実践
下記の流れは多くのWordPressサイトで安全かつ現実的な運用例です。技術的にもリスク管理的にもバランスが取れています。
- 1. フルバックアップを取得し、可能ならステージング環境を用意
- 2. WordPress・テーマ・プラグイン・PHPを最新版に
- 3. WEBPでエラーが出る場合はまずサーバー側対応状況を確認、必要ならMIME追加
- 4. SVGはサニタイズ対応の信頼プラグイン利用か独自処理を開発
- 5. SVGアップロード権限は管理者や特別な信頼ロールのみ
- 6. wp-content/uploadsで実行ファイルの動作を禁止
- 7. テストSVGで悪意コンテンツ除去を確認
- 8. CDN・キャッシュ・ブラウザ挙動もテスト
- 9. 本番化後はエラーログ・セキュリティログを24〜48時間監視
この全ステップを実施すれば、WordPressのファイルアップロードは単なる受け入れ体制ではなく、管理・追跡・持続可能なメディア運用に進化します。
よくある失敗例
SVGやWEBPの許可設定での失敗は、セキュリティと利便性のバランスを誤ることが原因です。ネットで見つけたfunctions.phpの短いコードを追加して「完了」とするのが典型的なミス。特にSVGではこれでは不十分です。
- SVGサニタイズなしでアップロード許可
- 全ユーザー権限にメディア・SVGアップロードを開放
- 古くて更新されていないMIMEプラグインの使用
- バックアップなしで本番テーマ編集
- サーバー側でuploadsディレクトリの実行ファイルブロックを未設定
- WEBPエラーをプラグインで解決しようとし、サーバー側対応を見落とす
- アップロード後のセキュリティログ監視不足
SEO・ユーザー体験への影響
正しく構成されたSVGとWEBPは、SEOに間接的ながら大きな効果をもたらします。WEBPはページ容量を減らしLargest Contentful Paint改善、SVGはアイコンやロゴの鮮明表示でUIクオリティ向上。しかしファイルアップロードルールが脆弱なら、せっかくのSEOメリットも一瞬でリスクへ。マルウェア感染サイトは検索エンジンで警告表示されたり、ユーザー信頼を失い、オーガニック流入も減少します。
最良の成果はパフォーマンスと安全性を両立した運用です。画像は最適化し、不要なファイルタイプは閉じ、必要な形式だけに限定、定期メンテナンスも忘れずに。WordPressの保守については WordPressセキュリティガイド や ウェブサイトメンテナンス もご参照ください。
まとめ
WordPressで安全なファイルアップロードを設定する目的は、SVGやWEBP等の先進フォーマットを活用しつつ、不要なリスクを回避することです。WEBPは多くのサイトでパフォーマンス改善のため安全に使えますが、SVGは必ずサニタイズ・権限制限・サーバー側対策とセットで運用を。単なるMIME許可より、バックアップ・テスト・権限設定・監視まで含めた総合的なプロセスが最適解です。
Hostragons環境なら、安全・高速・最新のWordPress運用が可能です。WordPressホスティング で用途に合ったホスティング・ドメイン・SSLを営業トーク抜きで比較選択できます。
よくある質問
WordPressがSVGをデフォルトで許可しない理由は?
SVGはXMLベースで、内部にJavaScriptや外部リンク、悪意コードを埋め込めます。XSSなどのセキュリティリスク低減のため、WordPressはSVGアップロードを標準でブロックしています。
WEBPがアップロードできない場合、WordPress側?サーバー側?
WordPress5.8以降はWEBP対応ですが、サーバーのPHP・GD・Imagick設定がWEBP未対応だとエラーになります。まずWordPressのバージョン、その後サーバー画像処理の対応状況をチェックしてください。
functions.phpでSVG許可は安全?
単体では安全ではありません。functions.phpでMIME許可を追加するとアップロード制限は解除されますが、SVGの内容をクリーン化しません。サニタイズ・権限制限・サーバー側対策も必要です。
SVGのアップロード許可はどのユーザーに与えるべき?
管理者や特別に信頼された編集者のみにSVGアップロード権限を与えるのが最も安全です。複数著者サイトで全員に許可すると大きなセキュリティリスクになります。
WEBPでSEO効果はある?
WEBPは小容量でページ表示速度を改善し、Core Web Vitals指標に好影響。結果としてSEOパフォーマンスも間接的に向上します。