
作っていたサイトが危険だったらたいへん!
でも何をしたらいいの?

今度はWordpressでできる主な対策を見ていこう
WordPress本体・テーマ・プラグインを常に最新化
対応内容
管理画面内から更新をプッシュ
目的
脆弱性修正が頻繁に行われるため、より強力な対策をされているバージョンに更新をしましょう。
不要なテーマ・プラグインの削除
対応内容
インストール後に入っている使用していないテーマ・プラグインを削除
目的
有効化していなくてもコードが残り攻撃対象になるため。サイトも軽くなるため積極的に実施した方が◎
セキュリティプラグイン導入(SiteGuard WP Plugin)
対応内容
ログインURL名の変更や認証方法などの設定
目的
プラグインの有効科で以下のような画面が表示できます。
主に「ログインページ変更」を設定します。
「ログインページの変更」で設定し、オプションの「管理画面からログイン画面にリダイレクトしない」にチェックを入れます。
ここにチェックを入れることで、https://サイト名/wordpress/admin と「admin」などを入れてもログイン画面へ行かないように対策できます。
■XMLRPC防御の設定(XMLRPCの悪用を防ぎます。)
XMLRPC防御 > 有効へ変更、タイプ > XMLRPC無効化へチェック > 変更を保存
■ユーザー名漏えい防御(ユーザー名の漏えいを防ぎます。)
ユーザー名漏えい防御 > 有効 > 変更を保存
参考サイト
https://ja.wordpress.org/plugins/siteguard
REST API 制御
対応内容
function.phpへ記述(※コードへの知識がある場合でないとサイトが崩れるので注意!)
以下を入力
add_filter( 'rest_authentication_errors', 'only_authorised_rest_access');
function only_authorised_rest_access( $result ){
if( ! is_user_logged_in() ) {
return new WP_Error( 'Error', 'You don\'t have permission to access this resource.', array('status' => 403));
}
return $result;
}
目的
WordPressのREST APIへのアクセスを制御しています。
デフォルトでは REST API を使って「ユーザー名一覧」などが取得できてしまいます。
このコードで「ログインユーザー以外はREST APIにアクセスできない」ようにすることで、情報漏えいリスクを下げられます。
X-Frame-Options ヘッダ追加
対応内容
function.phpへ記述(※コードへの知識がある場合でないとサイトが崩れるので注意!)
以下を入力
add_action( 'send_headers', function() {
header( 'X-Frame-Options: SAMEORIGIN' );
});
目的
クリックジャッキング攻撃の防止記述です。
HTTPレスポンスヘッダにX-Frame-Options: SAMEORIGIN
を追加します。
悪意のあるサイトに <iframe>で自サイトを読み込ませ、透明なボタンを重ねてクリックを誘導される攻撃を防ぎます。
クリックジャッキングとは、、?
ログイン画面など、情報を入力するサイトの上に偽物のサイトを透明化して被せることによって、WEBで入力した情報を抜き取る手法です。
手法としてはiframeでサイトを重ね合わせ読み込みし、透明化します。
frame要素およびiframe要素により表示できる範囲を設定することができます。
DENY:すべてのウェブページにおいてフレーム内の表示を禁止
SAMEORIGIN:同一オリジンのウェブページのみフレーム内の表示を許可
ALLOW-FROM:指定したオリジンのウェブページのみフレーム内の表示を許可
表示設定はWEBサイト構築でiframeを使用している場合も多いので、同一オリジンのウェブページのみフレーム内の表示を許可としているSAMEORIGINを使用するのが一番無難だと思います。
参考サイト
https://www.ipa.go.jp/security/vuln/websecurity/clickjacking.html
CSPポリシー設定
対応内容
function.phpへ記述(※コードへの知識がある場合でないとサイトが崩れるので注意!)
以下を入力
function add_csp_header() {
header("Content-Security-Policy: frame-ancestors 'self';");
}
add_action('send_headers', 'add_csp_header');
目的
X-Frame-Optionsと同じく、クリックジャッキング対策のコードです。
クリックジャッキング防止(外部サイトが自サイトをiframeで読み込めないようにする)用コードです。
X-Frame-Optionsより新しく推奨される方法ですが、後方互換性のため両方入れておくと安心です。
WAFの設定
対応内容
利用サーバーのコントロールパネルから設定
目的
サーバー側からの不正アクセスの対策
参考サイト

不要なCSSの削除(ブロックエディタ)
対応内容
function.phpへ記述(※コードへの知識がある場合でないとサイトが崩れるので注意!)
以下を入力
function my_enqueue_style()
{
wp_dequeue_style( 'wp-block-library' );
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_style' );
目的
こちらは不要なCSSを読み込まないことでページ読み込みを少し軽量化しているもので、直接的な脆弱性対策ではないそうですが参考程度に、、
WordPressが自動で読み込む「Gutenberg(ブロックエディタ)用のCSSファイル」を削除する処理です。
高速化・不要なCSS削除の目的で使われます。
ただしブロックエディタを使用している場合は崩れてしまうので入れる場合はクラシックエディタを使用しているときのみなど、注意が必要です。

今回はWordpressでできるセキュリティ対策をまとめたよ
HTMLでできる対策は以下で紹介しているから併せて要チェック!
