1

二部構成の質問。

最初に、非表示の入力フィールドに IP アドレスをエコーし​​ようとすると、フォームの送信が停止します。一部の入力を検証するためのjqueryがあり、そのフィールドにIPアドレスが存在するとすべてが停止します。

第二に、私が取得しているIPアドレスは、端末をチェックインしたときに見つけたものではありません. Godaddy を介してホストされている私のサイトが、私のマシンの IP ではなく、プロキシの IP のように見えるのはなぜですか?

これが私が使用しているコードです。

function ipCheck() {
    if (getenv('HTTP_CLIENT_IP')) {
        $ip = getenv('HTTP_CLIENT_IP');
    }
    elseif (getenv('HTTP_X_FORWARDED_FOR')) {
        $ip = getenv('HTTP_X_FORWARDED_FOR');
    }
    elseif (getenv('HTTP_X_FORWARDED')) {
        $ip = getenv('HTTP_X_FORWARDED');
    }
    elseif (getenv('HTTP_FORWARDED_FOR')) {
        $ip = getenv('HTTP_FORWARDED_FOR');
    }
    elseif (getenv('HTTP_FORWARDED')) {
        $ip = getenv('HTTP_FORWARDED');
    }
    else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    //$ip = str_replace('.','', $ip);
    return $ip;
}
4

1 に答える 1

2

あなたのコードは、任意の発信者が必要な IP アドレスを指定できるようにしています (別名 IP スプーフィング)。

攻撃者がしなければならないことは、X-Forwarded-For: 123.123.123.123.

このコードはセキュリティを低下させ、ローカルホスト (127.0.0.1) または「サンタクロース」のふりをすることができます。これらの値には実際の IP アドレスが含まれていることが検証されていないためです。

また、たとえば、X-Forwarded-For HTTP ヘッダーには、1 つだけでなく複数の IP アドレス (コンマで区切られたもの) を含めることができることに注意してください。

$_SERVER['REMOTE_ADDR']が唯一の選択肢です。

于 2012-06-08T19:12:02.193 に答える