Вопрос по файлу go.php в DLE

Тема в разделе "PHP", создана пользователем Dozor2, 20 окт 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Dozor2

    Dozor2

    Регистр.:
    18 дек 2007
    Сообщения:
    328
    Симпатии:
    155
    Имеем файл:
    PHP:
    function reset_url($url) {
        
    $value str_replace "http://"""$url );
        
    $value str_replace "www."""$value );
        
    $value explode "/"$value );
        
    $value reset $value );
        return 
    $value;
    }
    $url rawurldecode $_GET['url'] );
    $url = @base64_decode $url );
    $url str_replace "&""&"$url );

    $_SERVER['HTTP_REFERER'] = reset_url $_SERVER['HTTP_REFERER'] );
    $_SERVER['HTTP_HOST'] = reset_url $_SERVER['HTTP_HOST'] );

    if ((
    $_SERVER['HTTP_HOST'] != $_SERVER['HTTP_REFERER']) or $url == "") {
        @
    header 'Location: /index.php' );
        die ( 
    "Access denied!!!<br /><br />Please visit <a href=\"/index.php\">{$_SERVER['HTTP_HOST']}</a>" );
    }

    @
    header 'Location: ' $url );

    die ( 
    "Link Redirect:<br /><br />Please click <a href=\"{$url}\">here.</a>" );
    Какие могут быть проблемы если удалить проверку реферера? То есть эту часть:
    PHP:
    (($_SERVER['HTTP_HOST'] != $_SERVER['HTTP_REFERER'])
     
  2. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.035
    Симпатии:
    703
    Собственно происходит проверка с вашего ли сайта сделан переход на go.php если его убрать и будет присутствовать какой-то параметр url скрипт попытается сделать переход на него, запросов к базе он никаких не делает при этом, чистое декодирование параметра. Вообщем если кто-то будет использовать ваши leech ссылки(спарсят например контент) без этой проверки при переходе с другого сайта переход будет осуществлен по параметру url при использовании этой проверки происходит редирект на site.ru/index.php
     
    Dozor2 нравится это.
  3. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    ну и еще xss - появится возможность нагенерить кучу линков которые будут вести с вашего сайта
     
    Dozor2 нравится это.
  4. Dozor2

    Dozor2

    Регистр.:
    18 дек 2007
    Сообщения:
    328
    Симпатии:
    155
    zzallexx, спасибо, но это все я понимаю, меня интересуют конкретные проблемы, которые могут возникнуть.

    Дело в том, что если например в гугл хроме юзер перейдет по leech ссылке через "Открыть ссылку в новой вкладке", то реферер не передается и соответственно юзера редиректит на главную. Поэтому я и задался вопросом целесообразности проверки реферера.

    ZCFD, спасибо, можно поподробней?
     
  5. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    пример
    Код:
    http://site/go.php?url=zcfd.ru
    
    c проверкой реферера - редиректить будет только если ссылка была на твоем сайте, в остальных случаях будет отправлять на главную твоего сайта

    убираем проверку - редиректить будет все время. Т.е. я генерирую ссылки вида
    Код:
    http://site/go.php?url=zcfd.ru/p=1
    http://site/go.php?url=zcfd.ru/p=2
    http://site/go.php?url=zcfd.ru/=3
    
    и получаю три страницы твоего сайта которые ссылаются на меня

    почитай про убитую тему с xss - это именно оно

    вариант - редиректить через js, ну или прятать в noindex

    это что касается SEO

    ну и повышаешь риск что например используют эту штуку что бы увести кукисы пользователей, это про безопасность
     
    Dozor2 нравится это.
  6. Dozor2

    Dozor2

    Регистр.:
    18 дек 2007
    Сообщения:
    328
    Симпатии:
    155
    У меня весь каталог /engine/ (в котором go.php) закрыт от индексации в robots.txt так что в плане seo проблем быть не должно.

    Про кукисы можешь привести пример?
     
  7. Sanja_

    Sanja_ Создатель

    Регистр.:
    9 окт 2009
    Сообщения:
    27
    Симпатии:
    8
    а если взять через курл подставить реферер сайта то тоже получаеться будет работать xss ?там же идёт защита от этого функция reset_url() берёт url тока!
     
Статус темы:
Закрыта.