PHP で IP アドレスのリストをブロックする


ファイルの先頭に配置して、リクエストの IPv4 アドレスがブラックリストに登録されているかどうかを判断できる単純な PHP スニペットを次に示します.

$blacklist = array(
    '127.0.0.1',
    '192.168.1.1',
    // etc.
);

$ip = isset($_SERVER['REMOTE_ADDR']) ? trim($_SERVER['REMOTE_ADDR']) : '';

if (($key = array_search($ip, $blacklist)) !== false) {
    echo 'You are forbidden from accessing this resource!';
    exit();
}

// If the process has not exited, then the IP address is not blacklisted.


ファイルから IP アドレスのリストを取得することもできます.

    $blacklist = file('blacklist.txt', FILE_IGNORE_NEW_LINES);


上記の例では、blacklist.txt の各行に 1 つの一意の IP アドレスを含める必要があります.

403 応答コードの追加



まだ応答していない場合は、 403 error で応答することを検討してください.

http_response_code(403);
echo trim('
    <!DOCTYPE html><html><head><title>403</title></head><body>You are forbidden from accessing this resource!</body></html>
');
exit();


結論



いずれにせよ、これは、IP アドレスのリストが PHP サーバー上のリソースにアクセスするのをブロックする多くの簡単な方法の 1 つにすぎません.

問題が発生した場合は、このスニペットを追加したいファイルの先頭に追加することを忘れないでください!