1. PHP / Говнокод #24343

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    <?php
    if (isset($_SERVER['HTTP_X_REAL_IP'])) {
        $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
    } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $_SERVER['REMOTE_ADDR'] = $_SERVER['REMOTE_ADDR'];
    }
    $ip = $_SERVER['REMOTE_ADDR'];

    Я уже молчу о том, что HTTP_X_FORWARDED_FOR может содержать уязвимые строки и в дальнейшем он никак не фильтрируется.
    Во вторых, нужно просто один раз нормально настроить сервер и получать данные от REMOTE_ADDR или HTTP_X_REAL_IP.

    Запостил: Akdmeh, 31 Мая 2018

    Комментарии (12) RSS

    • > может содержать уязвимые строки

      например?
      Ответить
      • '; DROP DATABASE `tablica_yserov`; --
        Ответить
        • Ты мудак? Или это щутка?
          Ответить
          • Какой вопрос, такой ответ.

            Мы не знаем, что там ниже по коду и как используется значение $ip. А вдруг там вообще eval?
            Ответить
        • Поэтому я за "mysql_real_escape_string".
          Ответить
          • В этом примере вообще можно вызвать ip2long, чтобы получить число. Число точно ничего не повредит.
            Ответить
            • IPv6 нинужно.
              Ответить
            • Возможно, вы это не серьёзно (просто я понимаю юмор только про хуи и анусы, да и всякое бывает), но на всякий случай напомню про существование filter_var.


              Ответить
    • Ох уж эти попытки определить "реальный" IP пользователя через заголовки запроса...
      https://addons.mozilla.org/en-US/firefox/addon/ipflood/
      Ответить
      • Да, лажа. Браузер может подделать этот заголовок. Однако, популярные прокси-сервера этот заголовок вставляют правильно. Поэтому в лог нужно сохранять и адрес соединения, и X-Forwarded-For, но не доверять на 100% ни тому, ни другому.
        Ответить
    • Перепиши с "PHP"
      Ответить
    • Перепиши с "PHP"
      Ответить

    Добавить комментарий