ページごとにIPアドレスによるアクセス制限をかける

2024年6月26日
ページごとにIPアドレスによるアクセス制限をかける

WordPressサイトを運営する上で、特定のページへのアクセスを制限したいケースがあります。本記事では、プラグインを使用せずに、WordPressの機能を活用してページ単位でIPアドレスによるアクセス制限を実装する方法を解説します。💡

目次

なぜページ単位のIP制限が必要か?

セキュリティ強化:機密情報を含むページへのアクセスを特定のIPアドレスに限定できます。

コンテンツ管理:地域限定のコンテンツや、社内向けページなどを効果的に管理できます。

柔軟性:.htaccessによる制限よりも細かい制御が可能です。

実装手順

準備作業

アクセスをブロックした際のリダイレクト先ページを作成します:

WordPressの管理画面から「固定ページ」を新規作成
スラッグを「ipblock」に設定
アクセス制限メッセージなどを記載して公開

コードの実装

functions.php に以下のコードを追加します:
▼サンプルコード

    
    
<?php
function block_access_by_ip() {
    if(is_admin()) { return; }

    $ip_list = array(
        '123.456.789.001',
        '123.456.789.002'
    );
    if(in_array($_SERVER["REMOTE_ADDR"], $ip_list, TRUE)) {
        return;
    }
    
    if(is_page(array('restricted-page-1', 'restricted-page-2'))) {
        wp_safe_redirect(esc_url(home_url('/ipblock/')));
        exit();
    }
}
add_action('template_redirect', 'block_access_by_ip', 1);
?>



コードの解説

$ip_listアクセスを許可するIPアドレスのリストを定義

in_array()現在のアクセス元IPが許可リストに含まれているかチェック

is_page()制限をかけたいページのスラッグを指定

wp_safe_redirect()条件に合致した場合、ブロックページにリダイレクト

補足

  • 💡is_category()を使用して、特定のカテゴリーページに制限をかけられます。
  • 💡is_page()やis_category()を組み合わせて、複雑な条件設定も可能です。
  • 💡データベースやAPIを使用して、許可IPリストを動的に管理することも考えられます。

セキュリティ上の注意点

$_SERVER["REMOTE_ADDR"]

は偽装される可能性があるため、重要度の高い情報保護には不十分な場合があります。

より強固なセキュリティが必要な場合は、VPNや専用のセキュリティソリューションの導入を検討してください◎

※緊急依頼の場合は【緊急】のチェックボックスにチェックを入れてください。24時間以内に担当者より折り返します。

ご質問・ご依頼はこちらから