MENU

Wappalyzer対策!WordPressのバージョン情報を隠してセキュリティを高める方法

「自分のサイトがどんなシステムで動いているか、丸見えになっていませんか?」

ブラウザ拡張機能の「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ヘッダーなど)は、サーバー(.htaccessphp.ini)の設定で隠す必要があります。

この記事のコードで隠れるのは主にWordPress本体のバージョンです。


⚠️ 注意事項

functions.php を触る際は、必ずバックアップを取ってください。

まとめのメッセージ

攻撃者は『簡単に侵入できそうなサイト』を探しています。

情報を隠して『このサイト、中身がよく分からないな』と思わせることが、攻撃を諦めさせる第一歩になります!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次