WordPressサイトのセキュリティを強化するにあたって、「ログインページのURLを変更する」というのはよくある手法ですが、その他にもできることを忘備録として一覧にしました。
目次
SSLによる ログインと管理画面へのアクセスを強制する
ログイン画面や管理画面へアクセスする際、強制的に暗号化通信にします。<編集するファイル>
wp-config.php
<方法>
ファイルに下記を記述します。
1 |
define('FORCE_SSL_ADMIN', true); |
<詳細参考>
https://wpdocs.osdn.jp/%E7%AE%A1%E7%90%86%E7%94%BB%E9%9D%A2%E3%81%A7%E3%81%AE_SSL_%E9%80%9A%E4%BF%A1
クリックジャッキング対策
クリックジャッキングという、Webブラウザを悪用した攻撃があります。ページ全体に透明なiframeをかぶせて、閲覧者がリンクをクリックした際に意図せぬ動作をさせます。
具体的には、これを仕込まれると、スパムサイトに飛ばされたり、Twitterで知らないアカウントをフォローさせたり、様々な被害があるようです。
クリックジャッキングを防止しましょう。
<編集するファイル>
.htaccess
<方法>
.htaccessには、X-Frame-Optionsというオプションがあるので、追加します。
下記の記述で「自身のサイト以外からのフレーム内表示を拒否する」という意味になります。
1 |
Header always append X-Frame-Options SAMEORIGIN |
「全てのサイトからフレーム内表示を拒否する」場合は下記になります。
1 |
Header always append X-Frame-Options DENY |
Dos攻撃を防止する
サーバーに過負荷をかけるDos攻撃という手法があります。サービスが極端に重くなったりします。WordPressには、スマホアプリなどからの更新にも対応するため、/xmlrpc.phpというファイルが存在しますが、これがDos攻撃の対象になることがあります。このファイルへのアクセスをリダイレクトする処理を仕込みましょう。
<編集するファイル>
.htaccess
<方法>
下記の記述を追加します。
1 |
RewriteRule ^xmlrpc\.php$ "http\:\/\/0\.0\.0\.0\/" [R=301,L] |
REST APIを停止する
通常WordPressはPHPなのでDBから取得してPHPでデータを加工・表示しなければいけませんが、WP REST APIを使用するとJSON形式でデータを取得できるので、javascriptが使用できます。このREST APIを介して色々なデータを取得することができるので、悪用されないように、使用していないのであれば、停止しましょう。<編集するファイル>
functions.php
<方法>
下記の記述を追加します。
1 2 3 4 5 |
//REST APIを無効化 function delete_rest_api(){ return new WP_Error( 'disabled', array( 'status' => rest_authorization_required_code() ) ); } add_filter( 'rest_authentication_errors', 'delete_rest_api' ); |
ただし、プラグインによってはREST APIを使用しているものもあるようなので、挿入後はプラグインが正しく動作するか確認してください。
WordPressのバージョン情報を削除する
脆弱性があるWordPressのバージョンを使用していることがばれると攻撃の対象になりやすいため、ここを非表示にしましょう。<編集するファイル>
functions.php
<方法>
下記の記述を追加します。
1 2 3 4 5 6 7 8 9 10 |
//headerのgenerator remove_action('wp_head','wp_generator'); //scriptなどの「?ver=xxxx」を削除 function remove_wp_ver( $src ) { if ( strpos( $src, 'ver=' . get_bloginfo( 'version' ) ) ) $src = remove_query_arg( 'ver', $src ); return $src; } add_filter( 'style_loader_src', 'remove_wp_ver', 9999 ); add_filter( 'script_loader_src', 'remove_wp_ver', 9999 ); |
WordPressにはデフォルトで投稿者の一覧画面が存在します。
authorのIDが分かってしまうと、そこからログインIDまで辿れてしまう場合があるため、セキュリティ上良くありません。
authorの一覧を使用していないようであれば、リダイレクトの設定をしましょう。
<編集するファイル>
functions.php
<方法>
下記の記述を追加します。
1 2 3 4 5 6 7 |
function author_archive() { if( $_GET['author'] || preg_match('#/author/.+#', $_SERVER['REQUEST_URI']) ){ wp_redirect( home_url() ); exit; } } add_action('init', 'author_archive'); |
YoutubeChannelのご紹介
同様の内容を、動画でご覧になれます。https://youtu.be/s7xigWJ02UQ