Skip to content

Security: zerodancing/autosite

Security

docs/SECURITY.md

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

Аутентификация и пароли

  • Используется встроенная система Django AbstractUser.
  • Пароли хранятся в виде хэшей (через set_password/Django auth).
  • Для защищённых страниц и API включены декораторы login_required.

CSRF

  • Формы отправки заявок и регистрация используют {% csrf_token %}.
  • В чате при fetch() отправляется заголовок X-CSRFToken из cookie csrftoken, чтобы Django корректно валидировал CSRF.

XSS

  • 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