За последние 24 часа нас посетили 8785 программистов и 477 роботов. Сейчас ищут 193 программиста ...

небольшая проблема с подстановкой реферера

Тема в разделе "Прочие вопросы по PHP", создана пользователем wolandino, 9 фев 2006.

Статус темы:
Закрыта.
  1. wolandino

    wolandino Активный пользователь

    С нами с:
    5 фев 2006
    Сообщения:
    193
    Симпатии:
    0
    Адрес:
    Россия, Астрахань
    Приветствую,
    Есть задача создания системы постинга в каталоги, работает все, кроме постинга в один тип(исходные коды есть). Там проводится проверка на совпадение хоста, где расположен каталог с хостом реферера.

    Код в каталоге, отвечающий за проверку:
    PHP:
    1.  
    2. if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST' AND !defined('SKIP_REFERRER_CHECK'))
    3. {
    4.     if ($_SERVER['HTTP_HOST'] OR $_ENV['HTTP_HOST'])
    5.     {
    6.         $http_host = ($_SERVER['HTTP_HOST'] ? $_SERVER['HTTP_HOST'] : $_ENV['HTTP_HOST']);
    7.     }
    8.     else if ($_SERVER['SERVER_NAME'] OR $_ENV['SERVER_NAME'])
    9.     {
    10.         $http_host = ($_SERVER['SERVER_NAME'] ? $_SERVER['SERVER_NAME'] : $_ENV['SERVER_NAME']);
    11.     }
    12.     if ($http_host AND $_SERVER['HTTP_REFERER'])
    13.     {
    14.         $referrer_parts = parse_url($_SERVER['HTTP_REFERER']);
    15.         $http_host = preg_replace('#^www\.#i', '', $http_host);
    16.         $http_port = intval($referrer_parts['port']);
    17.         $refhost = $referrer_parts['host'] . (!empty($http_port) ? ":$http_port" : '');
    18.        
    19.  
    20.         if (!preg_match('#' . preg_quote($http_host, '#') . '$#siU', $refhost))
    21.         {
    22.             die('POST requests from foreign hosts are not allowed.');
    23.         }
    24.     }
    25. }
    26.  
    В итоге проверки у меня получается, что site.ru - хост каталога и site.ru:80 - хост рефа. Очевидно, что они не равны:) Можно как-нибудь попытаться обойти это?

    Использую класс Snoopy. :?:
     
  2. 440Hz

    440Hz Активный пользователь
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    я не понял? надо Reffer подделать что ли? так это запросто ...

    ну или добавляй для $http_host порт. какие проблемы?
     
  3. wolandino

    wolandino Активный пользователь

    С нами с:
    5 фев 2006
    Сообщения:
    193
    Симпатии:
    0
    Адрес:
    Россия, Астрахань
    нет, речь шла не о банальной подделке рефа - шла о моей невнимательности:)
    в качестве реферера я передавал страницу, с условиями, чекбоксом о согласии с правилами и прочей ерундой...
    а нужно было передать хост_каталога:80 и, что называется, не париться:))
    тему можно закрывать, спасибо
     
Статус темы:
Закрыта.