Показать сообщение отдельно
Soniks вне форума      Старый Отсутствие проверки Id переменной #1  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Soniks Посетить домашнюю страницу Soniks Найти все сообщения от Soniks Добавить Soniks в список друзей  
18.04.2007, 14:40

Продукт: PHP-Nuke
Версия: 8.0 и ниже
Описание:
В скриптах системы отсутствует проверка входных данных, поэтому при удачных стечениях обстоятельств (magic_quotes - OFF, register_global - ON, отсутствие фильтров SQL-инъекций), злоумышленник может выполнить SQL-Инъекцию.


Устранение:

Для более эффекта добавим проверку в главном файле.
Открываем: mainfile.php
Находим (43 строка):
PHP код:
 // override old superglobals if php is higher then 4.1.0
if($phpver >= '4.1.0') {
$HTTP_GET_VARS $_GET;
$HTTP_POST_VARS $_POST;
$HTTP_SERVER_VARS $_SERVER;
$HTTP_POST_FILES $_FILES;
$HTTP_ENV_VARS $_ENV;
$PHP_SELF $_SERVER['PHP_SELF'];
if(isset(
$_SESSION)) {
    
$HTTP_SESSION_VARS $_SESSION;
}
if(isset(
$_COOKIE)) {
    
$HTTP_COOKIE_VARS$_COOKIE;
}


Ниже добавляем проверку:
PHP код:
 if(isset($_REQUEST['id'])) $id intval($_REQUEST['id']);
if(isset(
$_REQUEST['lid'])) $lid intval($_REQUEST['lid']);
if(isset(
$_REQUEST['cid'])) $cid intval($_REQUEST['cid']);
if(isset(
$_REQUEST['pid'])) $pid intval($_REQUEST['pid']);
if(isset(
$_REQUEST['sid'])) $sid intval($_REQUEST['sid']);
if(isset(
$_REQUEST['tid'])) $tid intval($_REQUEST['tid']); 
 
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".