Безопасность и конфиденциальность
Пароли
Пароли пользователей и паролей ссылок хешируются алгоритмом argon2id. Пароли в открытом виде никогда не сохраняются и не логируются.
Токены
Токены подтверждения email и токены ссылок на скачивание генерируются криптографически случайным генератором. В базе данных сохраняется только SHA-256 хеш токена — сам исходный токен передаётся пользователю один раз и не хранится.
Файлы
Физические файлы хранятся на отдельном Docker-томе, недоступном напрямую из интернета. Путь на диске генерируется на основе случайного UUID и никогда не совпадает с исходным именем файла. Доступ к файлу выдаётся только после проверки владельца или условий публичной ссылки.
Сетевой периметр
PostgreSQL и Redis не публикуются наружу — единственная публичная точка входа — Caddy на портах 80/443 с автоматическим TLS-сертификатом Let's Encrypt.
Защита от брутфорса
Вход, регистрация, подтверждение email, повторная отправка письма, загрузка и скачивание файлов ограничены по частоте запросов через Redis. Ответы для регистрации и повторной отправки письма одинаковы независимо от того, существует ли указанный email — это предотвращает перебор email-адресов.
Журналирование
В логи сервера никогда не попадают пароли, исходные токены, ссылки подтверждения email, данные cookie/сессии или иные секреты.
Аудит событий
Регистрация, подтверждение email, вход, загрузка, скачивание, создание и отключение ссылок, удаление файлов, смена пароля и удаление аккаунта фиксируются как события аудита, доступные администратору.