Please do not open a public issue for security problems.
Email the maintainer privately (see the project author contact on the GitHub profile) with:
- a description of the issue;
- affected versions/components;
- reproduction steps (if available).
You should receive a response within a few days.
- Production secrets (Django
SECRET_KEY,DATABASE_URL, SMTP credentials,ENCRYPTION_KEY) are read from environment variables viadjango-environand are never committed. - Committed examples use placeholders (
backend/.env.example,backend/.env.production.example,frontend/.env.production.example). - If a real credential is ever pushed to Git, rotate/revoke it immediately and remove it from the Git history.
- Short-lived JWT access tokens (60 min).
- Rotating refresh tokens stored in an httpOnly, Secure cookie scoped to
/api/auth/. - Production cookie settings:
AUTH_REFRESH_COOKIE_SECURE=True,SESSION_COOKIE_SECURE=True,CSRF_COOKIE_SECURE=True.
DEBUG=False,SECURE_SSL_REDIRECT=True, HSTS enabled.SECURE_CONTENT_TYPE_NOSNIFF=True,SECURE_REFERRER_POLICY=same-origin,X_FRAME_OPTIONS=DENY.- CORS/CSRF allowed origins restricted to the app subdomain.
- Sensitive fields encrypted with AES (
ENCRYPTION_KEY).
Tenant export bundles (deployment/lws/data/*) contain real production data (users, contacts, visit photos). They must never be committed to a public repository; they are git-ignored.