Чистка данных
CakePHP класс Sanitize может быть использован для освобождения, подтвержденных пользователем данных, от злоумышленной и другой нежелательной информации. Sanitize – это внутренняя библиотека, так что она может использоваться в любом месте вашего кода, но, возможно, лучше всего в контроллерах и моделях.
Все, что вам необходимо сделать – это подключить библиотеку Sanitize:
<?
App::import('Sanitize');
?>
Подключив библиотеку, вы можете выполнять к ней статические вызовы.
paranoid
paranoid(string $string, array $allowedChars);
Эта функция уберет из передаваемой строки $string, все не буквенно-цифровые символы. Функция проигнорирует определенные символы, переданные в массиве $allowedChars.
<?
$badString = ";:<script><html>< // >@@#";
echo Sanitize::paranoid($badString);
// вывод: scripthtml
echo Sanitize::paranoid($badString, array(' ', '@'));
// вывод: scripthtml @@
?>
html
html(string $string, boolean $remove = false)
Этот метод подготовит, подтвержденные пользователем данные, для вывода внутри HTML. Это особенно полезно, если вы не хотите, чтобы пользователи были способны разрушить ваши шаблоны или вставить изображения или скрипты в ваши HTML страницы. Если опция $remove установлена в true, то обнаруженное HTML содержимое будет удалено, а не отрисовано, как часть HTML кода.
<?
$badString = '<font size="99" color="#FF0000">HEY</font><script>...</script>';
echo Sanitize::html($badString);
// вывод: <font size="99" color="#FF0000">HEY</font><script>...</script>
echo Sanitize::html($badString, true);
// вывод: HEY...
?>
escape
escape(string $string, string $connection)
Используется для экранирования SQL выражений, добавлением слешей, в зависимости от системной настройки magic_quotes_gpc. $connection – это имя базы данных для которой экранируется строка (имя совпадает с именем в файле app/config/database.php).
clean
Sanitize::clean(mixed $data, mixed $options)
Эта функция очень сильна :), многозадачный очиститель, предназначенный для работы с целыми массивами (например $this->data). Функция принимает массив (или строку) и возвращает очищенную версию. Следующие очищающие действия выполняются для каждого элемента в массиве (рекурсивно):
- Лишние пробелы (включая 0xCA) замещаются нормальным пробелом.
- Двустронний контроль специальных символов и удаление возвратов каретки для повышения SQL безопасности.
- Добавление слешей для SQL (просто вызывает sql функцию, как показано выше).
- Замена, введенных пользователем слешей, на верные.
Аргумент $options может быть или массивом или строкой. Когда передается строка, то $options – это имя соединения с базой данных. Если же передается массив, то он может быть объединен со следующими опциями:
- connection
- odd_spaces
- encode
- dollar
- carriage
- unicode
- escape
- backslash
Использование clean() с опциями выглядит таким образом:
<?
Sanitize::clean($this->data, array('encode' => false));
?>
<< Валидация данных из контроллера |
Обработка ошибок >>