WordPressで生成されたWebページのheadタグを見ると、メタタグにWordPressのバージョンが記述されています。
必要ない気がしますね。
削除しましょう。
meta generatorとは
metaタグのname属性にgeneratorを指定すると、ページを作成したソフトウェアを明示することができます。
WordPressはデフォルトで次のようなタグをhead内に出力してくれます。
<meta name="generator" content="WordPress 5.9.2" />
これを見ると、WordPressの5.9.2でページが生成されてことが一目瞭然ですね。
だから何?という話ですね。
WordPressは脆弱性が指摘されるたびにバージョンアップを繰り返してきた経緯があります。
WordPressというだけで不正アクセスしてくる愚か者がいるのに、バージョンまで明示するのは自殺行為ですね。
そこでサクッと削除しておきます。
ただし実際にはこのタグがなくても、愚か者は「WordPressの可能性がある」だけでムダなアクセスを垂れ流してくれます。
もしかしたらgeneratorとして別の名前を指定しておくと、「WordPressの可能性がない」と判断してくれるかもしれません。
ということで、generatorを偽装する方法もお伝えします。
ないんだろうなぁ・・・
meta generatorを削除
まずは削除する方法から。
wp_headアクションから、wp_generator関数を除外します。
次のコードをfunction.phpか自作プラグインに記述します。
- remove_action('wp_head', 'wp_generator');
この他にthe_generatorフィルターに__return_null関数を追加する方法があります。
- add_filter( 'the_generator', '__return_null' );
the_generatorフィルターは次のような経路で呼ばれます。
wp_headアクション → wp_generator関数 → the_generator関数 → the_generatorフィルター
そのためwp_headアクションから、wp_generator関数を除外する最初のコードの方が効率がいいです。
ですが、the_generator関数はWebページだけでなくrssやatomなどでも呼び出され、WordPressで生成されたことを明示する情報を生成します。
これらも削除するなら、二つ目のコードを実行しておく必要があります。
両方のコードを記述しておくのが無難かもしれません。
meta generatorを偽装
Webページのhead内に生成されるgeneratorを偽装するだけなら、次のコードのようにwp_headアクションからwp_generator関数を削除したあと、metaタグを出力する関数を追加します。
- function my_generator(){
- echo '<meta name="generator" content="MyBlogPress 1.0.0" />';
- }
- remove_action( 'wp_head' , 'wp_generator');
- add_action( 'wp_head' , 'my_generator');
rssなども対応させたいときは、the_generatorフィルターで個別に情報を生成していく必要があります。
- function my_get_generator( $generator , $type ){
- $content = 'MyBlogPress';
- $version = '1';
- $uri = 'https://localhost';
- $content_version = $content . ' ' . $version;
- switch ( $type ) {
- case 'html':
- $generator = '<meta name="generator" content="' . esc_attr($content_version) .'" >';
- break;
- case 'xhtml':
- $generator = '<meta name="generator" content="' . esc_attr($content_version) . '" />';
- break;
- case 'atom':
- $generator = '<generator uri="'.esc_url_raw($uri ).'" version="' . esc_attr($version) . '">' . esc_attr($content) .'</generator>';
- break;
- case 'rss2':
- $generator = '<generator>' . $content . '</generator>';
- break;
- case 'rdf':
- $generator = '<admin:generatorAgent rdf:resource="' . esc_url_raw( $uri ) . '" />';
- break;
- case 'comment':
- $generator = '<!-- generator="'. esc_attr($content) . '/' . esc_attr($version) .'" -->';
- break;
- case 'export':
- $generator = '<!-- generator="'. esc_attr($content) . '/' . esc_attr($version) . '" created="' . gmdate( 'Y-m-d H:i' ) . '" -->';
- break;
- default:
- $generator = '';
- }
- return $generator;
- }
- add_filter( 'the_generator', 'my_get_generator' ,10 , 2);
rss2とかrdfとか様々タイプがあります。
いくつかはuriを指定していますが、無理やり'https://localhost'を使用しています。
いいのか悪いのかはわかりません(汗
もしかしたらWebページの他は空文字でいいかもしれないので、適宜判断してください。
なおwp_head経由でthe_generatorフィルターが呼び出されるとき、引数の$typeは'xhtml'になります。
これだけは、値を返しましょう。
■Googleで他サイト検索
■僕がおススメするアフィリエイト教材
■マーケティング施策ツール