Files
ave-cms/help/helpers/Secure.md
T
2026-07-27 12:58:44 +03:00

2.1 KiB

Secure — очистка ввода и XSS

App\Helpers\Secure — санитизация пользовательского ввода на входе (перед сохранением/обработкой). Для безопасного вывода в HTML достаточно Twig {{ }} или Str::escape().

use App\Helpers\Secure;

Методы

sanitize($string, $trim = false)

Базовая очистка: FILTER_SANITIZE_STRING + trim + stripslashes + strip_tags

  • замена части символов. Возвращает «плоскую» безопасную строку без тегов.
Secure::sanitize('<b>Привет</b>  ');   // 'Привет'

cleanOut($string)

Декодирует HTML-сущности и снимает слэши (обратная подготовка для повторного использования значения).

Secure::cleanOut('Цена &lt;100&gt;');   // 'Цена <100>'

cleanSanitize($string, $trim = false, $end_char = '…')

cleanOut + sanitize в одном вызове (для «грязного» входа из legacy).

arrayXss($array, $stripslashes = false)

Рекурсивная XSS-очистка всего массива (например, $_POST).

$clean = Secure::arrayXss($_POST);

decodeXss($string)

Декодировать ранее закодированное значение.

sanitizePhoneNumber($phone)

Нормализовать телефон (убрать лишние символы).

Secure::sanitizePhoneNumber('+7 (999) 123-45-67');   // '79991234567'

Рецепты

Очистить заголовок перед записью:

$title = Secure::sanitize(Request::postStr('title'), true);

Массовая очистка формы:

$data = Secure::arrayXss($_POST);

Не используйте Secure::sanitize() для полей, где HTML допустим (описания, WYSIWYG) — он вырежет теги. Там нужна отдельная HTML-очистка/белый список.