Задать вопрос
@sasmoney

Не работает $_SERVER['HTTP_X_REAL_IP']; $_SERVER['HTTP_X_REAL_IP']; $_SERVER['REMOTE_ADDR'];?

Что не так в этом скрипте? просто не проходит если зайти с выбранных ip и выдает hacking attempt!
Если убрать getIP и все что с ним связано, то соответственно проходит дальше и все работает, но все равно доступ нужно давать только определенным ip а не всем.
function getIP() {
    if(isset($_SERVER['HTTP_X_REAL_IP'])) return $_SERVER['HTTP_X_REAL_IP'];
    return $_SERVER['REMOTE_ADDR'];
  }

  if (!in_array(getIP(), array('168.111.150.150', '168.111.150.151', '168.111.150.152', '168.111.150.153', '168.111.150.154'))) die("hacking attempt!");

$fk_id = '1000';
$fk_secret_1 = '123';

  $sign = md5($fk_id.':'.$_REQUEST['AMOUNT'].':'.$fk_secret_1.':'.$_REQUEST['MERCHANT_ORDER_ID']);

  if ($sign != $_REQUEST['SIGN']) die('wrong sign');
  • Вопрос задан
  • 505 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@sasmoney Автор вопроса
Проблема оказалась в включенном проксировании cloudflare, отключил и заработало
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Всем горемыкам посвящается: https://habr.com/ru/post/158417/

Поскольку там очень много непонятных букв, я напишу здесь короче.
Добавляя в проверку IP адреса всякую требуху типа X-РИЛИ-АЙПИ-МАМОМ-КЛЯНУС! вы как раз и открываете доступ любому атакующему, начиная с уровня неленивого пионера.

Проверять надо всегда только REMOTE_ADDR

Если сайт стоит стоит за проксей, то надо настучать в репу админу этой прокси, чтобы она проксировала и IP адрес тоже, это не так сложно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы