Skip to content

Security: UnlimitedEdition/T

Security

SECURITY.md

Security policy

Supported versions

Ovaj projekat je u aktivnom razvoju. Podržava se samo main grana.

Reporting a vulnerability

Ne otvaraj javni Issue za sigurnosne probleme. Umesto toga:

  1. Idi na Security → Advisories → Report a vulnerability u GitHub repozitorijumu, ili
  2. Pošalji email na: vlasniku repozitorijuma (GitHub profil)

Očekuj potvrdu u roku od 72 sata i detaljniji odgovor u roku od 7 dana.

Security hardening u kodu

Projekat primenjuje sledeće mere:

  • Secrets van kodaVITE_SUPABASE_* se učitavaju iz .env.local; nikad nisu commit-ovani. src/lib/env.ts zod-validira da svaka potrebna vrednost postoji pre nego što aplikacija krene.
  • Supabase Auth umesto hardkodovane lozinke za admin panel. Sesija živi u Supabase klijentu (local storage) i refresh-uje se automatski.
  • HTTP security headers na Vercelu (vercel.json):
    • Strict-Transport-Security (max-age=63072000; includeSubDomains; preload)
    • Content-Security-Policy (samo Supabase i fonts.googleapis.com)
    • X-Frame-Options: DENY (frame-ancestors 'none' u CSP)
    • X-Content-Type-Options: nosniff
    • Referrer-Policy: strict-origin-when-cross-origin
    • Permissions-Policy (kamera/mikrofon/geo isključeni)
  • Input validacija na server strani — edge funkcije submit-inquiry i calculate-price odbacuju nevalidne dimenzije, nevalidan email, prevelike stringove, i dozvoljavaju samo POST metodu.
  • CORS origin allowlist — edge funkcije čitaju ALLOWED_ORIGINS secret; wildcard (*) je rezervisan samo za razvoj.
  • File upload validationsrc/lib/storage.ts ograničava upload na 2 MB i JPEG/PNG/WebP/GIF MIME tipove; imena fajlova se sanitizuju.
  • CI security scans — CodeQL workflow weekly + na svakom PR-u.
  • Dependency updates — Dependabot sa grupisanim PR-ovima jednom nedeljno.
  • Strict TypeScript i ESLint sprečavaju široku kategoriju ranjivosti tipa-injekcije u kodu.

Ako sumnjaš da je Supabase anon key kompromitovan

  1. U Supabase Dashboard → Settings → API, regeneriši anon key
  2. Ažuriraj .env.local lokalno i environment variables u Vercelu
  3. Ako je ključ bio u git istorijatu, razmotri purge preko git filter-repo ili obeleži ga kao opozvan u CHANGELOG.md

There aren’t any published security advisories