Безопасность
Режим production
Переключение режима development/production осуществляется через файл .env в корне проекта. В production режиме все ошибки и предупреждения пишутся в папку log, а пользователю показывается ошибка 404.
APP_ENV=production
Защита от SQL инъекций
Перед подстановкой значений в SQL запрос без использования конструктора, их надо обработать специальной функцией secure(). Данный метод содержится в классе Database и доступен в объекте $db, находящимся в каждой модели и плагине.
Конструктор запросов самостоятельно применяет метод secure() к входящим данным. Если используются Прямые запросы, то при вызове метода secure() не нужно обрамлять значение в одиночные кавычки.
//Данные, которые необходимо обезопасить
$param = trim($_GET['param']);
//Для значения 'type' кавычки не нужны
$row = $this -> db -> getRow("SELECT * FROM `products`
WHERE `active`='1'
AND `type`=".$this -> db -> secure($param);
//Для целочисленных значений лучше применить функцию intval()
$row = $this -> db -> getRow("SELECT * FROM `table`
WHERE `id`='.intval($param)."'");
Безопасность административной панели
- При двух неудачных попытках авторизации пользователю предлагается ввести CAPTCHA.
- Восстановление пароля только после ввода captcha и подтверждения по ссылке на email.
- Привязка сессии к браузеру и IP адресу.
- Токены для исключения возможности CSRF при операциях в административной панели.
- Разлогинивание пользователя по таймауту, с возможность автологина.
URL в объекте Router
В объекте Router из URL адреса удаляется одиночная кавычка, при этом GET параметры остаются в исходном виде и в случае их применения в прямых запросах необходимо вызвать метод secure() из объекта базы данных.
Использование CSRF токена для форм
Подробно описано в разделе Безопасность форм.
$form = new Form(...);
$form -> useTokenCSRF();
Предыдущий раздел
Кэширование