「自分のサイトがどんなシステムで動いているか、丸見えになっていませんか?」
ブラウザ拡張機能の「Wappalyzer」などを使うと、誰でも簡単にそのサイトのWordPressやPHPのバージョンを調べることができます。実は、バージョン情報が公開されていることは、攻撃者に「私のサイトの弱点はここですよ」と教えているようなものです。
古いバージョンの脆弱性を突いた攻撃からサイトを守るためには、情報を「隠す」ことも立派なセキュリティ対策になります。
今回は、functions.php に数行のコードを追加するだけで、WordPressのバージョン情報を徹底的に隠す方法を解説します。
コードの解説
/**
* WordPressのバージョン情報を徹底的に隠す
*/
// HTMLの <head> 内にある generator タグを削除
remove_action('wp_head', 'wp_generator');
// RSSフィード内のバージョン情報を削除
add_filter('the_generator', '__return_false');
// スクリプト(JS)のURL末尾にある ?ver=x.x.x を削除
function remove_wp_ver_js( $src ) {
if ( strpos( $src, 'ver=' . get_bloginfo( 'version' ) ) ) {
$src = remove_query_arg( 'ver', $src );
}
return $src;
}
add_filter( 'script_loader_src', 'remove_wp_ver_js', 9999 );
// スタイルシート(CSS)のURL末尾にある ?ver=x.x.x を削除
function remove_wp_ver_css( $src ) {
if ( strpos( $src, 'ver=' . get_bloginfo( 'version' ) ) ) {
$src = remove_query_arg( 'ver', $src );
}
return $src;
}
add_filter( 'style_loader_src', 'remove_wp_ver_css', 9999 );
// 絵文字用スクリプト(これもバージョン情報を含む場合があるため)削除
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_styles', 'print_emoji_styles');
1. headから情報を消す
remove_action('wp_head', 'wp_generator');
wp_generator は、ページの <head> に WordPress のバージョンが分かるメタタグ(例: <meta name="generator" content="WordPress x.x.x" />)を出す処理です。
remove_actionで、wp_generatorの処理を外すため、この 1 行を実行すると、その generator メタタグが出力されなくなります。
HTMLのソースコードにある <meta name="generator" content="WordPress x.x.x" /> という記述を消します。これが一番のバージョン情報なので、真っ先に消すべきポイントです。
2. RSSフィード内の情報を消す
add_filter('the_generator', '__return_false');
実はRSSフィードの中にもバージョン情報が含まれています。ここも忘れずにストップさせます。
3. JSやCSSのURL末尾(?ver=x.x.x)を隠す
// スクリプト(JS)のURL末尾にある ?ver=x.x.x を削除
function remove_wp_ver_js( $src ) {
if ( strpos( $src, 'ver=' . get_bloginfo( 'version' ) ) ) {
$src = remove_query_arg( 'ver', $src );
}
return $src;
}
add_filter( 'script_loader_src', 'remove_wp_ver_js', 9999 );
// スタイルシート(CSS)のURL末尾にある ?ver=x.x.x を削除
function remove_wp_ver_css( $src ) {
if ( strpos( $src, 'ver=' . get_bloginfo( 'version' ) ) ) {
$src = remove_query_arg( 'ver', $src );
}
return $src;
}
add_filter( 'style_loader_src', 'remove_wp_ver_css', 9999 );
JSやCSSのURL末尾に付いているバージョン情報を削除します。
ここを見るとWordPress本体のバージョンが推測できてしまうため、一括で削除するのが効果的です。
「バージョンを隠す = 脆弱性がなくなる」ではない
バージョン情報を隠すことは、あくまで攻撃者の「調査」を難しくするための「目隠し」です。
根本的な解決策は、常にWordPress本体やプラグインを最新の状態にアップデートすることであることを忘れないようにしましょう。
PHPバージョンの非表示について
ご提示のコードは「WordPress」の情報を隠すものですが、PHPのバージョン(X-Powered-Byヘッダーなど)は、サーバー(
.htaccessやphp.ini)の設定で隠す必要があります。この記事のコードで隠れるのは主にWordPress本体のバージョンです。
⚠️ 注意事項
functions.php を触る際は、必ずバックアップを取ってください。
まとめのメッセージ
攻撃者は『簡単に侵入できそうなサイト』を探しています。
情報を隠して『このサイト、中身がよく分からないな』と思わせることが、攻撃を諦めさせる第一歩になります!

