CodeIgniter, руководство пользователя к версии 1.6.1


Класс Input

Класс Input предназначен для решения двух задач:

  1. Предварительная обработка глобальных входных данных для обеспечения безопасности.
  2. Предоставления вспомогательных функций для извлечения входных данных и их предварительной обработки.

Примечание: Этот класс автоматически инициализируется системой, поэтому нет необходимости делать это вручную.

Безопасная фильтрация

Функция безопасной фильтрации вызывается автоматически при вызове нового контроллера. При этом происходит следующее:

XSS фильтрация

CodeIgniter поставляется с фильтром предотвращающим XSS атаки, который может запускаться автоматически и фильтровать все POST и COOKIE-данные, с которыми сталкивается, или же вы может запускать его для каждого элемента вручную. По-умолчанию он не запускается глобально поскольку его работа приводит к дополнительному расходу системных ресурсов, в то время как необходимость его применения возникает не всегда.

XSS фильтр выявляет наличие часто используемых способов запуска скриптов JavaScript или других видов кода, которые пытаются перехватить cookie или произвести какие-то другие злонамеренные действия. Если фильтр сталкивается с чем-то запрещенным, то для безопасности он переводит данные в символы-мнемоники.

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

Для фильтрации данный с помощью XSS фильтра используйте эту функцию:

$this->input->xss_clean()

Вот пример ее использования:

$data = $this->input->xss_clean($data);

Если вы хотите, чтобы фильтр запускался автоматически всякий раз, когда используются POST или COOKIE-данные, то откройте файл application/config/config.php и установите следующую переменную:

$config['global_xss_filtering'] = TRUE;

Примечание: Если вы используете класс Validation, то он также предоставляет возможность XSS фильтрации.

Использование POST, COOKIE или SERVER-данных

CodeIgniter поставляется с тремя вспомогательными функциями, которые позволяют вам извлекать POST, COOKIE или SERVER-элементы. Главное преимущество этих функций заключается в том, что помимо прямого извлечения элементов ($_POST['something']), эти функции позволяют проверить существует ли элемент, и, если нет, то возврящают FALSE (boolean). Это дает вам возможность удобного использования данных без предварительной проверки элемента на существование. Другими словами, как правило, вы возможно делаете что-то вроде этого:

if ( ! isset($_POST['something']))
{
    $something = FALSE;
}
else
{
    $something = $_POST['something'];
}

С помощью встроенных функций CodeIgniter того же результата можно достичь следующим образом:

$something = $this->input->post('something');

Вот все эти три функции:

$this->input->post()

Первый параметр будет содержать имя POST элемента, который вы ищете:

$this->input->post('some_data');

Эта функция возвращает FALSE (boolean), если элемент, который вы пытаетесь получить, не существует.

Второй необязательный параметр позволяет пропустить данные через XSS фильтр. Это становится возможным, если установить второй параметр в TRUE;

$this->input->post('some_data', TRUE);

$this->input->cookie()

Эта функция идентична post функции, с тем лишь отличием, что она извлекает COOKIE-данные:

$this->input->cookie('some_data', TRUE);

$this->input->server()

Эта функция идентична приведенным выше функциям, с той лишь разницей, что она извлекает SERVER данные:

$this->input->server('some_data');

$this->input->ip_address()

Возвращает IP адрес текущего пользователя. Если IP адрес неверен, то функция вернет IP адрес: 0.0.0.0

echo $this->input->ip_address();

$this->input->valid_ip($ip)

На входе получает IP адрес и возвращает TRUE или FALSE (boolean), в зависимости от того, является ли адрес правильным или нет. Примечание: приведенная выше функция $this->input->ip_address() проверяет IP адрес автоматически.

if ( ! $this->input->valid_ip($ip))
{
     echo 'Not Valid';
}
else
{
     echo 'Valid';
}

$this->input->user_agent()

Возвращает название пользовательского агента (web-браузера), используемого текущим пользователем. Возвращает FALSE, если это имя недоступно.

echo $this->input->user_agent();