WordPressのセキュリティ対策(WP本体)その2

WordPress本体に対して行うセキュリティ対策「WordPressのセキュリティ対策(WP本体)」の続きです。

WordPressのバージョン情報を隠蔽する

WordPressのバージョンが分かってしまうと、それをヒントに攻撃者からそのバージョンの脆弱性が狙われるリスクが高くなるため、バージョン情報はページ上のどこにも出力されない方がよいという考えに基づく対策です。

WordPressのデフォルトテーマのままでは見た目上はバージョン情報が表示されませんが、HTMLのソース上にはWordPressのバージョン情報が出力されてしまうようです。
テーマ「Twenty Sixteen」で、ページのソースを調べると下記のように出力されていました。(パスの部分は*に置き換えてあります)

headタグ内に出力

<script>window._wpemojiSettings = {*.js?ver=5.8.2"}};
<link rel='stylesheet' id='*-css' href='*.css?ver=5.8.2' media='all' />
<meta name="generator" content="WordPress 5.8.2" />

bodyタグ内に出力

<script src='*.js?ver=5.8.2' id='admin-bar-js'></script>

バージョン情報を出力しないようにする方法

function.php に所定のコードを追記追記することで対応できるようです。function.php の編集はWordPressの管理画面上でも行うことができます。([外観] > [テーマエディター]でfunction.php を選択して編集します)

metaタグのgeneratorを非表示にする

function.php に下記を追記します。(末尾に追記しました)
これで、metaタグ自体が出力されないようになります。

remove_action( 'wp_head', 'wp_generator' );

JavaScriptやCSSのパラメータを非表示にする

function.php に下記を追記します。(末尾に追記しました)
これで、scriptとlinkのタグ自体は変わらず出力されますが、パラメータの”?ver=5.8.2″の部分は出力されなくなりました

function remove_cssjs_ver2( $src ) {
    if ( strpos( $src, 'ver=' ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver2', 9999 );
add_filter( 'script_loader_src', 'remove_cssjs_ver2', 9999 );

なお、下記のコード追記でも非表示にできるようでしたが、headタグ内のscriptタグのパラメータのみ非表示にすることができませんでした。(原因は分かりませんが、実際に起きたこととして記録しておきます)

function remove_src_wp_ver( $dep ) { 
	$dep->default_version = '';
}
add_action( 'wp_default_scripts', 'remove_src_wp_ver' );
add_action( 'wp_default_styles', 'remove_src_wp_ver' );

今回は以上です。WordPress本体に対して行うセキュリティ対策、他にも何かあれば掲載しようと思います。