Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Каким образом работает такая защита?

31K
09 сентября 2012 года
Alex_sss
12 / / 24.01.2008
В целом ясно, что делает данный код. Он берет ключ массива, например, $_GET, и сталкивает его с ключами массива $not_unset. Если эти ключи совпадают, то скрипт прекаращает свою работу по причине взлома. Только мне не понятно от каких угроз защищает данный код? Если например в строке бразуера передать запрос "...?_GET=x", то данный код выдаст угрозу и "пошлет подальше", Но что можно натворить таким запросом "...?_GET=x"?


Код:
$not_unset = array(
        'GLOBALS'   => true,
        '_GET'      => true,
        '_POST'     => true,
        '_COOKIE'   => true,
        '_REQUEST'  => true,
        '_SERVER'   => true,
        '_SESSION'  => true,
        '_ENV'      => true,
        '_FILES'    => true,
        'phpEx'     => true,
        'phpbb_root_path'   => true
    );
   
   
    if (!isset($_SESSION) || !is_array($_SESSION))
    {
        $_SESSION = array();
    }
   
        $input = array_merge(
        array_keys($_GET),
        array_keys($_POST),
        array_keys($_COOKIE),
        array_keys($_SERVER),
        array_keys($_SESSION),
        array_keys($_ENV),
        array_keys($_FILES)
    );
   
   
    foreach ($input as $varname)  
    {
        if (isset($not_unset[$varname]))  
        {
            // Hacking attempt. No point in continuing unless it's a COOKIE
            if ($varname !== 'GLOBALS' || isset($_GET['GLOBALS']) || isset($_POST['GLOBALS']) || isset($_SERVER['GLOBALS']) || isset($_SESSION['GLOBALS']) || isset($_ENV['GLOBALS']) || isset($_FILES['GLOBALS']))
            {
                exit('Hack');
            }
        }
    }
366
10 сентября 2012 года
int
668 / / 30.03.2005
Нужно смотреть дальнейший код. Видимо, входные данные идут куда-то типа eval()
443
13 сентября 2012 года
REmindER
292 / / 23.03.2003
Взято с Говнокода? Проверка глобальных массивов на содержание в них переменных с именами глобальных массивов. Видимо, register_globals все еще актуален. О говнокодистости говорит хотя бы многократная проверка, хотя вполне подошел бы array_search.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог