PHPで質問です。

下記、IPはダミーです。

あるサービスで、こちらのサーバーにアクセスしてくる仕組みがあるのですが、それ以外からのアクセスを禁止したく思います。

IP指定で、
IPアドレス帯:xxx.xxx.240.65~90
という記載があり、実際そのサービスからは
xxx.xxx.240.75でアクセスがきました。

要は、上記は
xxx.xxx.240.65~xxx.xxx.240.90の間のIPを
許可するようにすればよいのでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/12/02 18:19:35
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.2

回答回数4973ベストアンサー獲得回数2154

ポイント150pt

php のプログラムで、アクセスしてくる相手の IPアドレスを確認して処理を振り分けるとしたら、こんな感じになります。

<?php

$ip = $_SERVER['REMOTE_ADDR'];

if (preg_match('/^xxx\.xxx\.240\.(\d+)$/', $ip, $matches)) {
    $oct4 = intval($matches[1]);
    if (65 <= $oct4 && $oct4 <= 90) {

        /* ここ以降に、許可するクライアントへの処理 */
            ...
        /* ここまで */

        return;
    }
}

/* 許可されないクライアント */
http_response_code(403);
?>

許可されないクライアントに対しては、レスポンスを空にしておくだけでも良いのかもしれませんが、403 (Forbidden) を返すようにしてます。

その他の回答1件)

id:cawbridge2013 No.1

回答回数174ベストアンサー獲得回数17スマートフォンから投稿

ポイント150pt

IPテーブルで指定IPアドレス以外のパケットを破棄。

http://d.hatena.ne.jp/ihiroky/touch/20100104/1262590176

id:a-kuma3 No.2

回答回数4973ベストアンサー獲得回数2154ここでベストアンサー

ポイント150pt

php のプログラムで、アクセスしてくる相手の IPアドレスを確認して処理を振り分けるとしたら、こんな感じになります。

<?php

$ip = $_SERVER['REMOTE_ADDR'];

if (preg_match('/^xxx\.xxx\.240\.(\d+)$/', $ip, $matches)) {
    $oct4 = intval($matches[1]);
    if (65 <= $oct4 && $oct4 <= 90) {

        /* ここ以降に、許可するクライアントへの処理 */
            ...
        /* ここまで */

        return;
    }
}

/* 許可されないクライアント */
http_response_code(403);
?>

許可されないクライアントに対しては、レスポンスを空にしておくだけでも良いのかもしれませんが、403 (Forbidden) を返すようにしてます。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません