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('Цена <100>'); // 'Цена <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-очистка/белый список.