Sigurnost

Vaša trgovina nije mapa u tuđoj bazi.

Svaka trgovina dobiva svoju bazu podataka, svoje datoteke i sesiju vezanu isključivo na sebe. Ispod stoji samo ono što možemo pokazati u kodu — bez značka certifikata koje nemamo.

Jedna trgovina odvojeno
adresa
vasa-trgovina.shopkit.hr
baza
shopkit_tenant_vasa
datoteke
storage/tenant-vasa
sesija
vezana na vasa
prijenos
TLS 1.2 / 1.3

Ime baze i putanja nastaju iz slug-a trgovine pri otvaranju.

Odvojeno na četiri mjesta, ne samo u tablici

Kod većine platformi sve trgovine dijele istu bazu, a razdvaja ih stupac s brojem trgovine. Kod nas se trgovine razdvajaju prije nego upit dođe do podataka.

Zasebna baza podataka

Pri otvaranju trgovine nastaje nova baza, imenovana po vašem slug-u. Narudžbe i kupci nisu u istim tablicama kao tuđi.

Zasebne datoteke

Slike i prilozi idu u vlastitu mapu po trgovini; naljepnice dostavljača na disk koji web ne servira.

Sesija vezana na trgovinu

Prijava zna kojoj trgovini pripada. Sesija koja dođe iz druge trgovine se odbacuje, a token se izdaje iznova.

Ime trgovine kroz filter

Slug prolazi kroz dopuštene znakove i popis rezerviranih imena (admin, api, www…). Pokušaj rezerviranog imena diže obavijest.

Pošteno do kraja

Odvajanje provodi aplikacija time što bira bazu, a ne baza time što odbija pristup — jedan korisnički račun na bazi dolazi do svih trgovina. Zato se ne hvalimo da je pristup tuđim podacima „nemoguć", nego da je razdvojen na sve četiri razine i pokriven testovima koji padnu ako se pravilo o sesiji pokvari.

Ono što trgovina kaže pregledniku

Sigurnost se dobrim dijelom svodi na to koliko pravila stranica pošalje pregledniku. Svaka stranica trgovine nosi ih ovoliko, bez vašeg postavljanja.

  • Sve ide preko HTTPS-a; nesigurni zahtjev se preusmjerava, uz TLS 1.2 i 1.3.
  • Preglednik godinu dana pamti da za ovu adresu i njezine poddomene traži HTTPS.
  • Stranica se ne smije ugraditi u tuđi okvir, pa nema klikanja „naslijepo" preko nje.
  • Obrasci smiju poslati podatke samo trgovini i imenovanim pružateljima plaćanja.
  • Dodaci i ugrađeni objekti su zabranjeni, a tip datoteke se ne nagađa iz sadržaja.
odgovor trgovine — zaglavlja
strict-transport-security: max-age=31536000; includeSubDomains
content-security-policy: default-src 'self'; object-src 'none';
                         frame-ancestors 'self'; base-uri 'self';
                         form-action 'self' <pružatelji plaćanja>
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
referrer-policy: strict-origin-when-cross-origin
cross-origin-opener-policy: same-origin
permissions-policy: camera=(), microphone=()

Skraćeno radi čitljivosti; pravila sadržaja su dulja jer imenuju svaki dopušteni izvor.

Poddomena trgovine radi preko HTTPS-a s certifikatom koji se obnavlja sam. Vlastitu domenu spajamo mi i uz nju izdajemo certifikat.

Prijava, pristup i zapisnik

Panel trgovine je jedina vrata do vaših podataka. Zato su sporo otvaranje krivim ključem i zapis o tome što je tko promijenio dio same platforme.

Pogađanje lozinke se ne isplati

Nakon pet pogrešnih pokušaja prijava se zaključava — i po adresi s koje se pokušava i po e-pošti koja se pokušava. Napad s tisuću adresa na jedan račun tako ne prolazi.

pokušaja
5
po adresi
1 min
po računu
15 min
lozinka
bcrypt, 12 rundi

Više računa, zaštićen glavni

Zaposleniku dajete vlastiti račun umjesto da dijelite svoj. Račune otvara i zatvara samo glavni administrator, a njega se ne može preimenovati, ugasiti ni izbrisati.

Obrazac za zaboravljenu lozinku odgovara jednako i kad e-pošta ne postoji — tako se preko njega ne može provjeriti tko ima račun.

Zapisnik promjena, bez tajni u njemu

Svaka izmjena narudžbe, proizvoda, stranice ili postavke zapisuje se s korisnikom, vremenom, adresom i preglednikom. Zapisnik otvarate u panelu.

Maskira se prije zapisa

lozinka tajna token api ključ certifikat IBAN

Vrijednost se sprema kao ***, pa ključevi pružatelja plaćanja ne ostaju u zapisniku.

Dostupnost po planu

Broj administratorskih računa po planu čita se iz cjenika. Zaštita prijave, zapisnik promjena i provjera datoteka rade jednako u svakom planu.

Usporedite planove
Starter
1 račun
Business
5 računa
Enterprise
neograničeno računa

Dvije stvari koje najčešće odu po zlu

Podaci o kartici i učitane datoteke. Prvo ne držimo, drugo propuštamo kroz četiri provjere.

Kartica ne dolazi do nas

Broj kartice kupac upisuje na stranici pružatelja plaćanja, ne u trgovini. U bazi trgovine nema ni jednog stupca za broj kartice, rok važenja ili sigurnosni kod — ostaje narudžba, iznos i oznaka transakcije koju pružatelj vrati.

Uz narudžbu se čuva

način plaćanja
kartica
iznos
1.254,35 €
oznaka transakcije
txn_7f31c9a2
podaci kartice
ne čuvaju se

Pravila sadržaja pritom imenuju svakog pružatelja kojem obrazac smije poslati podatke — na bilo koju drugu adresu preglednik ga ne pusti.

Datoteka mora biti ono što tvrdi da je

Slika s podmetnutim kodom je klasičan način da se preuzme trgovina. Zato se svaka učitana datoteka provjeri četiri puta, prije nego dođe na disk.

  1. 1

    Nastavak s popisa

    Dopušteni su samo jpg, png, gif, webp, pdf te Word i Excel. SVG, HTML i PHP nikad.

  2. 2

    Pravi tip sadržaja

    Stvarni tip datoteke mora odgovarati nastavku — preimenovana skripta ne prolazi.

  3. 3

    Slika se mora otvoriti

    Ako se slika ne može pročitati kao slika, odbija se.

  4. 4

    Pregled početka datoteke

    Prvi kilobajti se čitaju i traži se kod. Nađe li se, prijenos se zaustavlja i stiže obavijest.

Privole koje se mogu dokazati

Kad vas jednom pitaju je li kupac dao pristanak, treba pokazati kada i s koje adrese. Trgovina to zapisuje sama, i za registrirane kupce i za goste.

  • Vrste privola postavljate sami — registracija, narudžba, kontakt, newsletter.
  • Privolu koju označite obveznom blagajna traži prije dovršetka narudžbe, i provjerava je ponovno ako je kupac preskočio korak.
  • Svaki pristanak se zapisuje s datumom, vremenom i IP adresom.
  • Zapisnik privola otvarate u panelu, s pretragom po kupcu.
  • Kolačići: analitika se učita samo ako posjetitelj prihvati, a „Odbijam" stoji uz „Prihvaćam" jednako vidljivo.
vasa-trgovina.hr/admin — zapisnik privola
ana.k@primjer.hr Uvjeti i politika privatnosti narudžba 26.03. 23:12
gost Uvjeti i politika privatnosti narudžba 26.03. 21:41
marko.p@primjer.hr Obavijesti o akcijama newsletter 26.03. 18:07
iva.s@primjer.hr Uvjeti i politika privatnosti registracija 26.03. 16:22

Uz svaki zapis stoji i IP adresa. Primjer je ilustrativan.

Što na ovoj stranici namjerno ne piše

Stranice o sigurnosti su puna značaka i postotaka koje nitko ne provjerava. Radije ćemo napisati kraće i točno.

Pitajte nas konkretno
  • Naše certifikate

    ShopKit nema ISO, SOC 2 ni PCI DSS certifikat i ne prikazuje ih. Pružatelji kartičnog plaćanja imaju svoje — to je njihova potvrda, ne naša.

  • Postotke dostupnosti

    Ne pišemo „99,9 %" jer to ne mjerimo vanjskim nadzorom. Kad počnemo mjeriti, pisat će brojka i kako je izmjerena.

  • Nepogrešivost

    Nijedna platforma nije neprobojna. Ono što možemo obećati je da greška ne prođe tiho: aplikacijska greška, zastoj u obradi i sumnjiv prijenos datoteke šalju obavijest, a ispravnost svih baza provjerava se svaki dan.

Pitanja o sigurnosti

Treba vam odgovor za vašeg pravnika ili IT-ovca? Pišite nam i odgovorit ćemo konkretno, bez općenitosti.

Sve ovo dolazi postavljeno

Ne postavljate certifikat, ne pišete pravila sadržaja i ne birate razinu zaštite. Otvorite trgovinu i provjerite — prvih 14 dana ne naplaćujemo.

Zasebna baza, HTTPS, zapisnik promjena i GDPR privole rade u svakom planu, i na Starteru.