ぱなのあです。
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>