🐶
【WordPress】プラグインなしで簡単にできるセキュリティ対策
導入前にやっておきたい最低限のセキュリティ対策です。
固定IPなどを契約してる場合は、htaccessにてログイン画面へのアクセス制限をしてしまうのが一番ですね。。
author情報からのユーザー名露呈防止
WPでは投稿者アーカイブが作成されるため下記URLでアクセスすると、「ドメイン/author/ログインID/」にリダイレクトされ、ユーザー名(ログインID)が露呈します。
下記はその対策として、トップページにリダイレクトさせるというもの
functions.php
function disableAuthorArchiveQuery() {
if( preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING'])){
wp_redirect(home_url());
exit;
}
}
add_action('init', 'disableAuthorArchiveQuery');
WP REST APIからのユーザー名露呈防止
WPには外部からhttp通信でデータを取得・送信できる仕組みが実装されてるようです。
下記URLで閲覧されてしまいます。
対策としてユーザー名を非表示にします。
functions.php
function filterRestEndpoints($endpoints) {
if (isset($endpoints['/wp/v2/users'])) {
unset($endpoints['/wp/v2/users']);
}
if (isset($endpoints['/wp/v2/users/(?P<id>[\d]+)'])) {
unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
}
return $endpoints;
}
add_filter('rest_endpoints', 'filterRestEndpoints', 10, 1);
pingback機能の停止
pingback機能で他のブログからの通知を受け付けることができますが、
使わない場合は悪用防止のため無効化します。
functions.php
function disableSelfPingback(&$links) {
$home = get_option('home');
foreach($links as $l => $link) {
if(0 === strpos($link, $home)) {
unset($links[$l]);
}
}
}
add_action( 'pre_ping', 'disableSelfPingback' );
Wordpressのバージョンを隠す
バージョンによっては脆弱性が指摘されているので、バージョン情報があるとそれを突かれて攻撃される場合があります。
デベロッパーツールで下記のタグを探すだけで確認ができてしまいます。
<meta name=”generator” content=”WordPress X.X.X″>
下記はバージョンを表示しないようにする設定。
functions.php
remove_action('wp_head','wp_generator');
wp-configへのアクセス制限
データベースへの接続情報を閲覧させないように対策。
下記はApache 2.4使える設定。
<Files wp-config\.php>
Require all denied
</Files>
Discussion