これで解決! コピペで使えるWordPress用のセキュリティヘッダー

ぱなのあです。

WordPressで設定するセキュリティヘッダー、毎回どう設定すればいいか迷うのでまとめました。

.htaccessファイルにコピペするだけでそのまま使えます。

一応Cocoonでは動作確認済みですが、使用する際は必ず動くかを確認してからご利用ください。

<IfModule mod_headers.c>
  # X-Frame-Optionsはレガシーブラウザ用に設定しておく(設定したからといってセキュリティが危なくなるわけではない)
  Header always append X-Frame-Options SAMEORIGIN

  # 同一オリジンの場合はクエリを含む全ての情報を送信し、クロスオリジンの場合はoriginのみを送信、 https => httpへのセキュリティレベルの落ちる通信では情報を送信しない
  Header always set Referrer-Policy: "strict-origin-when-cross-origin"

  # CookieにHttpOnly属性とSecure属性を付与
  Header edit Set-Cookie ^(.*)$ "$1;HttpOnly;secure;SameSite=none"

  # content sniffing を無効にする
  Header always set X-Content-Type-Options nosniff

  # Cross-Origin-Resource-Policyは"cross-origin"でないとX(旧Twitter)などで画像が読み込めない
  Header always set Cross-Origin-Resource-Policy "cross-origin"

  # WordPressの場合はCross-Origin-Embedder-Policyは"unsafe-none"
  Header always set Cross-Origin-Embedder-Policy "unsafe-none"

  # WordPressの場合はCross-Origin-Opener-Policyは"same-origin-allow-popups"
  Header always set Cross-Origin-Opener-Policy "same-origin-allow-popups"

  # Proxy ヘッダーを無効にする
  RequestHeader unset Proxy

  # いらない設定を削除
  Header unset Expires
  Header unset Host
  Header unset P3P
  Header unset Pragma
  Header unset Public-Key-Pins
  Header unset Public-Key-Pins-Report-Only
  Header unset Via
  Header unset X-AspNet-Version
  Header unset X-AspNetMvc-version
  Header unset X-Frame-Options
  Header unset X-Powered-By
  Header unset X-Runtime
  Header unset X-Version

  # 特定の拡張子のファイルではいらないヘッダーを削除
  # ※CSPをセットする拡張子
  <FilesMatch "\.(m?js|pdfsvgz?)$">
    Header unset X-UA-Compatible
    Header unset X-XSS-Protection
  </FilesMatch>

  # 特定の拡張子のファイルではいらないヘッダーを削除
  <FilesMatch "\.(css|ico|jpe?g|jpe|gif|png|bmp|tiff?|webp|heics?|heifs?|as[fx]|wm[vx]?|avi|divx|flv|mov|qt|mpe?g|mpe|m4v|mp4|ogv|webm|mkv|3gpp?|3gp?2|txt|asc|c?c|h|srt|[ct]sv|ics|rtx|vtt|dfxp|mp3|m4[ab]|aac|ram?|wav|og[ga]|flac|midi?|wma|wax|mka|rtf|swf|class|tar|zip|gz(ip)?|rar|7z|exe|psd|xcf|doc|pot|pps|ppt|wri|xl[astw]|mdb|mpp|doc[xm]|dot[xm]|xls[xmb]|xlt[xm]|xlam|ppt[xm]|pps[xm]|pot[xm]|ppam|sld[xm]|one(toc2?|tmp|pkg)|o?xps|od[tpsgcbf]|wpd?|key|numbers|pages)$">
    Header unset X-UA-Compatible
    Header unset X-XSS-Protection
    Header unset Content-Security-Policy
    Header unset X-Content-Security-Policy
    Header unset X-WebKit-CSP
  </FilesMatch>
</IfModule>
タイトルとURLをコピーしました