Security: zerodancing/autosite
Security
Используется встроенная система Django AbstractUser.
Пароли хранятся в виде хэшей (через set_password/Django auth).
Для защищённых страниц и API включены декораторы login_required.
Формы отправки заявок и регистрация используют {% csrf_token %}.
В чате при fetch() отправляется заголовок X-CSRFToken из cookie csrftoken, чтобы Django корректно валидировал CSRF.
Django templates по умолчанию делают auto-escape.
В сообщениях чата на клиенте используется textContent при вставке текста (никакого innerHTML), поэтому введённый текст не интерпретируется как HTML.
Авторизация (права доступа)
В API чата реализована проверка доступа к диалогу:
клиент видит только свои диалоги;
staff/оператор (через is_staff) может читать/писать в диалогах.
Для сообщений чата:
сообщение не должно быть пустым;
длина ограничена (до 2000 символов).
Для заявок:
даты парсятся сервером (возможность запланировать время для услуги).
Защита от “слива” и базовые заголовки
Настроены заголовки безопасности:
X_FRAME_OPTIONS = DENY
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_BROWSER_XSS_FILTER = True
cookie-флаги HttpOnly.
Мини-лимит на спам в чате
В api_send_message реализована защита “1 сообщение в секунду” на одного пользователя в рамках одного диалога.
Переключение языка (safe redirect)
В set_language редирект на next проверяется через url_has_allowed_host_and_scheme, чтобы избежать открытых редиректов.
There aren't any published security advisories
You can’t perform that action at this time.