Pristup podacima provjerava se na više nivoa.

Butiga povezuje prijavu, korisničku ulogu, članstvo u workspaceu, bazna pravila izolacije, audit trag i provjerene procedure oporavka. Svaka kontrola ima jasan zadatak.

Sigurnost u Butigi nije jedna oznaka niti jedno obećanje. Pristup počinje autentifikovanom sesijom, zatim se provjeravaju aktivan korisnik, članstvo u workspaceu, uloga i pravo na konkretan zapis. Podaci workspacea dodatno su odvojeni pravilima u PostgreSQL bazi. Email tajne čuvaju se enkriptovano, prilozi nijesu javni linkovi, a važne osjetljive radnje ostavljaju audit trag. Backup se smatra upotrebljivim tek kada prođe kontrolisan restore test.

Šta štiti koji sloj

  • Prijava i sesija
    Potvrđuju identitet korisnika i prekidaju pristup kada je sesija istekla, opozvana ili korisnik više nije aktivan.
  • Članstvo i uloga
    Određuju kojem workspaceu i kojim poslovnim radnjama korisnik smije pristupiti.
  • Provjera konkretnog zapisa
    Ograničava pristup leadu, ponudi, prilogu ili drugom objektu prema ulozi, vlasništvu i kontekstu.
  • Izolacija u bazi
    PostgreSQL Row-Level Security primjenjuje workspace kontekst i kada aplikacioni upit dođe do baze.
  • Enkripcija tajni
    Štiti email lozinke i OAuth tokene tako da se ne čuvaju kao čitljiv tekst.
  • Audit i oporavak
    Pomažu da se osjetljiva promjena istraži i da se podaci vrate kroz kontrolisanu proceduru.

Prijava, lozinke i upravljanje sesijama

Lozinke se ne čuvaju u čitljivom obliku. Sistem čuva njihov kriptografski hash i provjerava unesenu lozinku bez mogućnosti da administrator pročita original. Uspješna prijava otvara serversku sesiju sa nasumičnim tajnim tokenom, dok baza čuva samo hash tog tokena.

Web sesijski kolačić je označen kao HTTP-only, koristi sigurni režim u produkciji i SameSite zaštitu. Sesija ima vremensko ograničenje i ograničenje neaktivnosti. Odjava opoziva aktivnu sesiju. Promjena ili uspješan reset lozinke opoziva druge aktivne sesije korisnika, a administrator može pregledati i opozvati sesije kada je to potrebno.

Za zahtjeve koji mijenjaju podatke iz browsera koristi se CSRF provjera. Pokušaji prijave i osjetljive operacije poput mail povezivanja imaju ograničenje učestalosti. Privatni aplikacioni odgovori koriste zabranu cacheiranja, dok sigurnosna zaglavlja smanjuju izlaganje nepotrebnih browser informacija.

Provjera produkcijske granice

Provjera od 29.07.2026. potvrdila je HTTPS odgovor aplikacije, HSTS zaglavlje, zabranu čuvanja privatnih odgovora u cacheu, noindex zaštitu interne aplikacije i odgovor 401 na privatnu CRM rutu bez autentifikacije. Ova provjera potvrđuje javno vidljivu granicu, ali nije zamjena za penetracioni test.

Odvajanje workspaceova i kontrola uloga

Korisnik ne dobija pristup workspaceu samo zato što zna ili pošalje njegov identifikator. Backend provjerava da workspace postoji, da je aktivan i da korisnik ima aktivno članstvo. Odabrani workspace zatim postaje serverski kontekst za naredne upite; klijentski podatak iz forme ili URL-a nije izvor ovlašćenja.

Administratorska platforma odvojena je od uobičajenih workspace ruta. Normalne poslovne rute ne smiju tiho čitati podatke svih firmi, čak ni kada korisnik ima šira platformska prava.

Kontrola Poslovni ishod
Aktivno članstvo Korisnik ulazi samo u workspace kojem je stvarno dodijeljen.
Uloga na backendu Administracija, prodaja, menadžment i onboarding dobijaju različit obim radnji.
Pravo na zapis Prodavac ili operativni korisnik ne dobija automatski svaki lead, ponudu ili prilog.
Row-Level Security Upit bez ispravnog workspace konteksta ne vraća podatke druge firme.
Testovi izolacije Pogađanje tuđeg identifikatora i cross-workspace izmjene provjeravaju se kao negativni scenariji.

Zašto postoje i aplikaciona i bazna provjera

Uloga i vlasništvo najbolje se razumiju u aplikaciji, dok baza vidi konačan kontekst workspacea. Korišćenje oba nivoa smanjuje vjerovatnoću da jedna propuštena provjera u novoj ruti odmah otvori podatke druge firme. Runtime nalog baze nema pravo da zaobiđe primijenjena RLS pravila.

Ilustrativni primjer: pokušaj otvaranja zapisa iz drugog workspacea

  1. Korisnik je prijavljen i šalje zahtjev sa identifikatorom drugog workspacea ili tuđeg zapisa.
  2. Backend traži aktivno članstvo u izabranom workspaceu. Bez članstva zahtjev se prekida.
  3. Ako ruta nastavi do baze, upit se izvršava sa serverski utvrđenim workspace kontekstom.
  4. RLS pravilo ne vraća red koji pripada drugom workspaceu.
  5. Za osjetljive radnje dodatno se provjeravaju uloga i pravo na konkretan poslovni zapis.

Primjer opisuje stvarnu arhitekturu provjere. Nije tvrdnja da je bilo koji sistem nemoguće pogrešno konfigurisati.

Poslovni email i pristupni podaci

Za Gmail povezivanje Butiga koristi Google OAuth. Aplikacija ne traži niti čuva Google lozinku. Produkcijski kod traži Gmail dozvolu potrebnu za korisnički email klijent: čitanje izabrane poruke, sinhronizaciju, slanje poruke koju je korisnik sastavio i promjenu stanja poruke. OAuth refresh token čuva se enkriptovano na backendu i vezan je za odgovarajući workspace i mail nalog.

Kod standardnog IMAP/SMTP povezivanja pristupna tajna se enkriptuje prije čuvanja. Kriptografski kontekst uključuje workspace, mail nalog i namjenu tajne, pa se vrijednost ne tretira kao prenosiv slobodan tekst između različitih naloga. Google ili mail pristup može se odspojiti kada više nije potreban.

HTML sadržaj poruke prolazi uklanjanje aktivnih elemenata kao što su skripte, forme i iframe sadržaj prije prikaza. To smanjuje rizik od izvršavanja aktivnog email sadržaja, ali korisnik i dalje treba oprezno da postupa sa linkovima i prilozima nepoznatog pošiljaoca.

Prilozi i poslovni dokumenti

Prilozi nijesu izloženi kroz trajne javne URL-ove. Lista, upload, preuzimanje i brisanje prolaze kroz autentifikaciju, aktivni workspace i provjeru prava na povezani lead. Veličina uploada je ograničena, naziv fajla se čisti prije prikaza i downloada, a prilog mora ostati vezan za odgovarajući lead, ponudu ili onboarding zapis.

Preuzimanje i brisanje priloga bilježe se u audit tragu. Brisanje nije dozvoljeno svakom članu tima: provjeravaju se uloga, uploader, vlasnik leada ili odgovorna osoba za onboarding.

Audit trag, zahtjevi i regresione provjere

Butiga bilježi važne osjetljive promjene, uključujući događaje prijave, reset lozinke, opoziv sesije, promjene članstva, pristup prilozima i izmjene ključnih poslovnih zapisa. Audit zapis sadrži poslovni kontekst potreban za naknadnu provjeru. Ne tvrdimo da audit bilježi svaki klik niti da je sam po sebi nepromjenjiv.

API zahtjevi dobijaju identifikator koji pomaže povezivanju greške i serverskog zapisa bez oslanjanja samo na opis korisnika. Regresioni testovi otkrivaju montirane API rute i provjeravaju da nova ruta ne postane anonimno dostupna bez izričite odluke. Posebni testovi pokrivaju uloge, tenant izolaciju i pokušaje pristupa tuđim identifikatorima.

Backup, restore i oporavak

Dokumentovana procedura zahtijeva backup baze prije produkcijskih migracija, provjeru da fajl nije prazan i kontrolni hash. Operativne tabele i audit zapisi ulaze u bazni backup, dok se storage priloga štiti odvojeno kada se koriste lokalni uploadi.

Backup se ne smatra potvrđenim samo zato što fajl postoji. Restore se izvodi u odvojenoj privremenoj bazi, zatim se provjeravaju migracije i tenant izolacija, a testna baza se uklanja. Posljednji evidentirani restore test 21.07.2026. potvrdio je kompletan restore i fail-closed ponašanje tenant podataka u kontrolisanom okruženju.

Restore produkcije smiju obavljati samo ovlašćeni administratori servera. Restore događaj mora se evidentirati i izvan aplikacije, jer povrat baze može vratiti i ranije stanje aplikacionog audit traga. Konkretni period čuvanja, RPO, RTO i ugovorna dostupnost definišu se prema paketu i ugovoru; ne navodimo univerzalne vrijednosti koje nijesu odobrene.

Zaštita u Android aplikaciji

Android aplikacija odbija neenkriptovani mrežni saobraćaj prema produkcijskim servisima. Pristupni token i lokalni poslovni payload čuvaju se enkriptovano ključem koji generiše Android Keystore na uređaju. Ključ se ne upisuje kao obična vrijednost u aplikaciona podešavanja.

Zaštita uređaja ostaje zajednička odgovornost. Korisnik treba da koristi zaključavanje ekrana, redovno ažurira Android i odmah prijavi izgubljen ili kompromitovan uređaj kako bi se sesija mogla opozvati. Butiga trenutno ne navodi biometriju kao obaveznu kontrolu na svakom podržanom uređaju.

Šta radi Temelj za rast, a šta vaš tim

Temelj za rast Korisnička organizacija
Održava autentifikaciju, serverske provjere, workspace izolaciju i sigurnosna ažuriranja proizvoda. Dodjeljuje naloge samo osobama kojima je pristup potreban i uklanja pristup kada osoba promijeni ulogu ili napusti tim.
Štiti email tajne u podržanim tokovima i ograničava pristup prilozima. Koristi zasebne naloge, jake lozinke i odspaja mailbox ili uređaj koji više nije potreban.
Vodi audit za odabrane osjetljive događaje i dokumentuje backup/restore postupak. Ne unosi nepotrebne osjetljive lične podatke i definiše zakonitu svrhu, rok čuvanja i interna pravila obrade.
Prima i istražuje prijave mogućih sigurnosnih problema. Prijavljuje sumnjivu aktivnost, izgubljen uređaj ili pogrešno dodijeljena prava bez odlaganja.

Šta namjerno ne tvrdimo

  • Nema apsolutne sigurnosti
    Nijedan SaaS sistem nije „neprobojan“. Kontrole smanjuju rizik i ograničavaju posljedice, ali ne uklanjaju svaki mogući incident.
  • Nema izmišljene sertifikacije
    Butigu ne predstavljamo kao ISO 27001, SOC 2 ili „bank-grade“ sistem bez završenog nezavisnog postupka i važećeg dokaza.
  • MFA i SSO nijesu obećani
    Trenutni potvrđeni baseline koristi lozinku, serverske sesije i kontrolu pristupa. MFA i SSO ne navodimo kao dostupne dok ne budu implementirani i provjereni.
  • Nema univerzalnog SLA
    RPO, RTO, retention, namjenska infrastruktura i SLA potvrđuju se u konkretnom paketu i ugovoru.

Odgovorno prijavljivanje mogućeg problema

Ako mislite da ste pronašli sigurnosni propust, pišite na sa naslovom „Sigurnosna prijava — Butiga“. Navedite pogođenu funkciju, vrijeme provjere, korake za reprodukciju i očekivani naspram stvarnog rezultata. Koristite demonstracione podatke i uklonite lozinke, tokene, email sadržaj i lične podatke iz priloga.

Ne pristupajte tuđim podacima, ne preuzimajte podatke kao dokaz, ne mijenjajte ili brišite zapise, ne zadržavajte pristup i ne izvodite testove uskraćivanja usluge, socijalnog inženjeringa ili fizičkog pristupa. Prekinite provjeru čim potvrdite minimalan dokaz i omogućite razumno vrijeme za istragu prije javnog objavljivanja. Trenutno ne obećavamo novčanu nagradu niti fiksni rok odgovora.

Privatnost i naredni korak

Sigurnost proizvoda i zakonita obrada podataka nijesu ista obaveza. Pročitajte obavještenje o privatnosti, uslove korišćenja i politiku kolačića. Za pitanja o konkretnoj arhitekturi vašeg workspacea, migraciji, ulozi obrađivača ili ugovornim kontrolama kontaktirajte Temelj za rast. Za prikaz dozvola, email povezivanja i rada na Android uređaju možete zakazati demo.

Butiga. Posao na okupu.

Pogledajte kako vaš prodajni proces izgleda na jednom mjestu.

Prođite kroz klijente, email, ponude, zadatke i predaju posla na primjeru koji odgovara vašem timu.

Zakažite demo