Безопасность

Пользователь запуска

Рекомендуется установить пользователя запуска на более низкий уровень, например, такой же, как у пользователя nginx. Пользователь запуска устанавливается в config/server.php в user и group. Аналогично, пользователь для настраиваемых процессов указывается через user и group в config/process.php. Следует отметить, что процесс монитора не нужно устанавливать как пользователя запуска, так как для его нормальной работы требуется повышенный уровень доступа.

Структура контроллеров

В каталоге controller или его подкаталогах должны находиться только файлы контроллеров, запрещено помещать другие классы, иначе, при отсутствии постфикса контроллера, файлы классов могут быть незаконно доступны через URL, что может привести к непредсказуемым последствиям. Например, app/controller/model/User.php фактически является классом Model, но ошибочно помещен в каталог controller, и при отсутствии постфикса контроллера, пользователь сможет получить доступ к любым методам User.php посредством URL вида /model/user/xxx. Для полного исключения подобной ситуации настоятельно рекомендуется использовать постфикс контроллера, чтобы явно обозначить файлы контроллеров.

Фильтрация XSS

Во избежание ограничений, webman не осуществляет фильтрацию XSS запросов. webman настоятельно рекомендует осуществлять фильтрацию XSS при рендеринге, а не перед помещением в базу данных. Кроме того, шаблонизаторы типа twig, blade, think-template автоматически выполняют фильтрацию XSS, поэтому нет необходимости осуществлять ее вручную. Это очень удобно.

Совет
Если вы фильтруете XSS перед помещением в базу данных, это может привести к несовместимости с некоторыми приложениями и плагинами.

Предотвращение SQL-инъекций

Для предотвращения SQL-инъекций рекомендуется использовать ORM, например illuminate/database или think-orm, и по возможности избегать собственной сборки SQL-запросов.

Проксирование через nginx

Когда ваше приложение должно быть доступно для внешних пользователей, настоятельно рекомендуется добавить перед webman прокси-сервер nginx для фильтрации некорректных HTTP-запросов и повышения безопасности. Подробнее читайте в прокси-сервере nginx.