Preskoči na vsebino

Pravno besedilo — osnutek

Izjava o varnosti

Tehnični in organizacijski ukrepi za zaščito storitve RavSolutions — prenos, prijava, seje, ločevanje delovnih prostorov, datoteke, zaščita pred zlorabo, beleženje dnevnikov in odziv na incidente — ter, enako odkrito, kaj nimamo.

Nazadnje posodobljeno
2026-08-04
Različica
1.0.0
Čas branja
12 min branja

1. Kaj je ta izjava

Ta izjava opisuje tehnične in organizacijske ukrepe, ki varujejo storitev RavSolutions in podatke, shranjene v njej. Napisana je tako, da jo je mogoče preveriti: navaja dejansko izvedene ukrepe, 15. razdelek pa enako odkrito pove, česa nimamo.

Ni jamstvo in ne ustvarja zaveze glede ravni storitve; pogodbeni pogoji so v Pogojih uporabe. Kjer se isti ukrep pojavi tudi v obvestilu GDPR ali v informacijah o obdelavi podatkov, naj v vsebini pomeni isto stvar.

Zajema storitev, ki jo upravljamo. Za varnost računov, naprav in gesel znotraj lastnega delovnega prostora naročnika je odgovoren naročnik; noben tukaj opisan ukrep ne varuje delovnega prostora, katerega poverilnice so bile deljene ali ponovno uporabljene.

2. Kako je storitev zgrajena

Storitev sestavljajo tri vmesniki — spletna stran, aplikacija in portal za stranke —, en API, baza podatkov PostgreSQL, instanca Redis in shramba predmetov. Vmesniki dosežejo API le prek HTTPS.

Vse razen shrambe predmetov deluje za obratnim posrednikom (reverse proxy) na infrastrukturi RackForest Zrt. v regiji Hungary (EU). Baza podatkov in Redis sta povezana le v notranje omrežje in ne objavljata nobenih vrat, tako da nobenega od njiju ni mogoče doseči z interneta; z njima lahko komunicira le API.

Naložene datoteke niso shranjene na strežnikih aplikacije, temveč v shrambi predmetov Cloudflare R2, konfigurirani za European Union. Segment je zaseben: nima javnega dostopa in pred njim ni prilagojene domene, vsaka datoteka pa se postreže prek povezave, ki jo podpiše API.

Skrivnosti — poverilnice baze podatkov, podpisne ključe, API-ključe ponudnikov — zagotavlja okolje ob uvedbi in nikoli niso zapisane v izvorno kodo repozitorija.

3. Varnost prenosa

Ves promet do spletne strani, aplikacije, portala in API-ja poteka prek HTTPS. Certifikate samodejno izda in obnavlja Let's Encrypt, navadne zahteve HTTP pa so preusmerjene na HTTPS.

Obratni posrednik pošilja HTTP Strict Transport Security z največjo starostjo enega leta, vključno s poddomenami in s predhodnim nalaganjem, tako da brskalnik, ki je stran že videl, ne bo prešel na nešifrirano povezavo.

Odgovori vsebujejo X-Content-Type-Options: nosniff, X-Frame-Options: SAMEORIGIN, strogo politiko napotitve strict-origin-when-cross-origin in politiko dovoljenj, ki zavrača kamero, mikrofon in geolokacijo. Glave za identifikacijo strežnika in ogrodja so odstranjene. API sprejema zahteve za navzkrižne izvore le z izvorov aplikacije in portala.

Spletna stran, aplikacija in portal so postreženi s politiko varnosti vsebine (Content Security Policy). Skripti se lahko naložijo le iz same storitve in, v aplikaciji, iz Google Identity Services za prijavo z Google; spletna stran in portal ne dovoljujeta nobenega skripta tretje osebe. Vdelava v okvir, vsebina vtičnikov in prepisovanje baze dokumenta so zavrnjeni, API pa odgovori s politiko, ki ne dovoljuje ničesar.

4. Prijava in gesla

Geslo mora imeti vsaj osem znakov ter vsebovati veliko črko, malo črko in številko. Gesla so shranjena le kot kriptografski povzetek s soljo, ustvarjen z gostiteljem gesel ASP.NET Core Identity; nikoli niso shranjena v obliki, ki bi jo bilo mogoče prebrati nazaj, prav tako pozabljenega gesla ne moremo obnoviti, temveč ga lahko le ponastavimo.

Po desetih neuspešnih poskusih prijave je račun zaklenjen za petnajst minut. Štetje se vodi za račun in ne za klicatelja, tako da je poskus, razpršen na več naslovov, ustavljen, čeprav vsak naslov posebej ostane pod omejitvijo hitrosti na klicatelja.

Na voljo je prijava z računom Google. Identitetni žeton, ki ga izda Google, se preveri pri Googlu, preden se ustvari kakršna koli seja, gesla Google pa nikoli ne prejmemo.

Registracija pošlje potrditveno sporočilo na naveden naslov, naslov pa je označen kot potrjen, ko je uporabljena povezava v njem. Pozabljeno geslo se ponastavi z enkratno povezavo, poslano na registrirani naslov; uspešna ponastavitev prav tako počisti obstoječo zaklenitev, ker je ta običajen razlog za ponastavitev.

5. Seje in žetoni

Dostopni žetoni so JSON Web Tokens, veljavni petnajst minut. Pri vsaki zahtevi se preveri izdajatelj, prejemnik, podpis in rok veljavnosti, brez dovoljene tolerance ure.

Žeton za osvežitev je šestinšestdeset bajtov iz kriptografsko naključnega generatorja. Baza podatkov hrani le njegov skrajšani povzetek SHA-256, tako da samega žetona ni mogoče prebrati iz kopije baze podatkov.

Vsaka osvežitev rotira žeton: prejšnji je preklican, nov pa izdan. Žetoni za osvežitev potečejo po tridesetih dneh, odjava pa žeton takoj prekliče.

Osvežitev je zavrnjena, če je bil uporabnik deaktiviran ali delovni prostor postal neaktiven, tako da odvzem dostopa nekomu začne veljati najpozneje ob poteku njegovega trenutnega dostopnega žetona.

6. Nadzor dostopa in ločevanje delovnih prostorov

Vsak uporabnik ima vlogo znotraj delovnega prostora, končne točke pa jo preverjajo. Funkcije, odvisne od paketa, dodatno varujejo lastne politike avtorizacije, tako da funkcijo zunaj naročenega paketa API zavrne, namesto da bi jo le skril v vmesniku.

Delovni prostori so ločeni na ravni podatkov: vsak zapis nosi identifikator delovnega prostora, ki mu pripada, vsaka poizvedba pa je omejena na delovni prostor klicatelja. Zapis, ki pripada drugemu delovnemu prostoru, v rezultatu ni skrit — vanj sploh ni izbran.

Delovni prostor se pridobi iz trditve (claim) v podpisanem dostopnem žetonu in razreši na strežniku. Identifikatorju delovnega prostora, ki ga posreduje odjemalec, ni zaupano ničesar.

Povezave v realnem času uporabljajo isto avtentikacijo kot preostali API; povezava brez veljavnega žetona je zavrnjena, velikost prejete sporočila je omejena, podrobne informacije o napakah pa so vrnjene le v razvojnem okolju.

7. Dostop do portala za stranke

Stranka prejme povezavo, ki vsebuje naključno ustvarjen žeton, pripadajoč enemu naročilu in z rokom veljavnosti. Žeton odpre to eno naročilo in nič drugega v delovnem prostoru.

Preden je naročilo prikazano, mora obiskovalec potrditi e-poštni naslov ali telefonsko številko, zabeleženo za to stranko. Uspešna potrditev ustvari dokaz, veljaven dvanajst ur, podpisan s HMAC z uporabo ključa, izpeljanega iz — a kriptografsko neodvisnega od — strežniške podpisne skrivnosti, in preverjan v konstantnem času.

Poskusi potrditve so omejeni po hitrosti na klicatelja, namerno pa ne na žeton: omejevanje na žeton bi komurkoli omogočilo, da stranki zaklene dostop do njenega lastnega naročila, preprosto s porabo njenega proračuna.

8. Naložene datoteke

Nalaganje je omejeno na fiksen seznam vrst datotek — JPEG, PNG, WebP, PDF, DOCX, XLSX in navadno besedilo — ter na največjo velikost, ki je odvisna od naročenega paketa. Slike so pred shranjevanjem na strežniku ponovno kodirane.

Datoteke so posredovane prek kratkotrajnih podpisanih povezav, ki jih ustvari API. Ker je segment sam po sebi zaseben, potekla ali spremenjena povezava ne omogoči popolnoma ničesar.

Nalaganje in prenašanje imata ločene omejitve hitrosti na klicatelja, tako da uhajajoče povezave ali odjemalca, ki uide izpod nadzora, ni mogoče uporabiti za neomejeno izčrpavanje prostora za shranjevanje ali pasovne širine.

Shranjene datoteke so pri ponudniku shrambe šifrirane v mirovanju.

9. Zaščita pred zlorabo

API uporablja omejitve hitrosti, razdeljene po klicatelju — po delovnem prostoru in uporabniku iz žetona, kjer ta obstaja, sicer pa po naslovu odjemalca. Prijava, prijava z Google, ponastavitev gesla in potrditev v portalu so omejene na deset poskusov na minuto; registracija na pet.

Omejevalniki berejo dejanski naslov klicatelja iz posredovanih glav posrednika, samo posredniku pa je zaupano, da jih nastavi. Brez te konfiguracije bi se vsaka zahteva zdela, da prihaja iz posrednika, en sam proračun pa bi si delili vsi, kar bi zaščito spremenilo v izpad.

Obratni posrednik uveljavlja dodatno splošno omejitev hitrosti pred aplikacijo, tako da je promet omejen, še preden sploh doseže API.

Prejeti podatki so preverjeni na strežniku, preden dosežejo domensko logiko, napake pa so vrnjene kot strukturirana sporočila: odjemalcu niso poslani sledi sklada, sporočila baze podatkov ali notranje poti.

10. Podatki v mirovanju

Baza podatkov in Redis sta le v notranjem omrežju in sprejemata povezave le od API-ja; nobeden od njiju ni izpostavljen internetu.

Shramba predmetov šifrira shranjene datoteke v mirovanju, segment pa ni javno berljiv.

Varnostne kopije se izdelujejo redno, njihova obnovitev pa se preizkuša. Podatki, izbrisani ob koncu naročnine, izginejo iz varnostnih kopij, ko te potečejo v svoji običajni rotaciji, do takrat pa se ne uporabljajo za noben drug namen.

11. Beleženje dnevnikov in sledljivost

Aplikacija zapisuje dnevnike strežnika, vsak delovni prostor pa ima zgodovino aktivnosti, ki beleži, kateri uporabnik je kaj in kdaj spremenil. Zgodovina je naročniku vidna znotraj aplikacije.

Dnevniki strežnika, aplikacije in varnosti se hranijo 90 dni, razen kadar se določen zapis hrani dlje zaradi tekoče varnostne preiskave.

Dnevniki obstajajo za delovanje storitve in preiskovanje incidentov. Ne beležimo gesel, sejnih žetonov ali podatkov plačilnih kartic.

12. Delovanje

Dostop do produkcijskih sistemov in produkcijskih podatkov je omejen na osebje, ki ga potrebuje za delovanje ali podporo, po načelu najmanjših potrebnih pravic in pod obveznostjo zaupnosti, ki traja tudi po koncu njihove zaposlitve.

Odvisnosti tretjih oseb so pripete in upravljane centralno, tako da se različica spremeni na enem mestu; varnostne posodobitve platforme in njenih odvisnosti uveljavljamo, ko postanejo na voljo.

Spremembe sheme baze podatkov se uveljavljajo kot verzionirane migracije ob zagonu storitve, tako da shema v produkciji vedno ustreza kodi, ki se na njej izvaja.

13. Ponudniki

Ponudniki, ki v našem imenu obdelujejo podatke — gostovanje, shramba predmetov, dostava e-pošte, plačila in fakturiranje — so navedeni, skupaj z njihovo vlogo in regijo, v 5. razdelku obvestila GDPR in 8. razdelku informacij o obdelavi podatkov.

Novega ponudnika objavimo vsaj 30 dni, preden ta začne obdelovati podatke, tako da ima naročnik, ki ugovarja, čas za ukrepanje.

14. Odziv na incidente

Vodimo interni register kršitev varstva osebnih podatkov in sledimo postopku, ki zajema odkrivanje, oceno, obvladovanje in obveščanje.

Kadar kršitev verjetno predstavlja tveganje za pravice in svoboščine fizičnih oseb, o tem brez nepotrebnega odlašanja in, kjer je izvedljivo, v 72 urah od seznanitve obvestimo pristojni nadzorni organ (33. člen GDPR); kadar je tveganje visoko, v razumljivem jeziku obvestimo tudi prizadete posameznike (34. člen GDPR).

Kadar delujemo kot obdelovalec, brez nepotrebnega odlašanja po seznanitvi s kršitvijo obvestimo naročnika, ki deluje kot upravljavec, in mu pomagamo pri njegovih lastnih obveznostih obveščanja.

15. Česa nimamo

Nobene spletne storitve ni mogoče narediti popolnoma varne. Ta stran opisuje ukrepe in ne jamstev, Pogoji uporabe pa ne dajejo nobene zaveze glede razpoložljivosti ali ravni storitve.

Nimamo certifikata ISO/IEC 27001 niti poročila SOC 2, storitev pa ni bila predmet neodvisnega testa penetracije. Če se karkoli od tega spremeni, bo to navedeno prav v tem razdelku.

Dvofaktorska avtentikacija za uporabniške račune še ni na voljo. Varnost računa zato temelji na moči gesla, zaklenitvi računa in zgoraj opisanih omejitvah hitrosti, zato prosimo za geslo, ki ni uporabljeno nikjer drugje.

Storitev deluje v eni sami regiji, brez prehoda med regijami ob izpadu, in če ta regija odpove, je storitev nedostopna, dokler se ne vrne. To navajamo, ker izjave o varnosti, ki naštevajo le prednosti, ni mogoče uporabiti za odločanje.

16. Prijava ranljivosti

Če najdete ranljivost, pišite na info@ravsolutions.eu z opisom, koraki, potrebnimi za njeno ponovitev, in naslovom, na katerega vpliva. Prejem potrdimo in vam povemo, kako jo nameravamo obravnavati.

Dajte nam razumno priložnost za odpravo težave, preden jo javno objavite. Med testiranjem ne dostopajte do podatkov, ki niso vaši, jih ne spreminjajte niti ne izbrišite, ne poslabšajte storitve za druge in ne uporabljajte socialnega inženiringa proti našim zaposlenim ali ponudnikom.

Ne vodimo plačanega programa bug bounty. Zoper prijavitelja, ki ravna v dobri veri in znotraj zgoraj navedenih meja, ne bomo ukrepali.

17. Spremembe te izjave

To izjavo ohranjamo posodobljeno s storitvijo. Številka različice in datum veljavnosti na vrhu strani prikazujeta, katero besedilo je veljavno, prejšnje različice pa so na voljo na zahtevo.

Ko se spremeni tukaj opisan ukrep, se z njim spremeni tudi ta stran. Vprašanja o vsebini lahko pošljete na info@ravsolutions.eu.

Nastavitve piškotkov

Uporabljamo nujno potrebne piškotke za prijavo, za varnost in za shranjevanje vaše odločitve. Z vašo privolitvijo na javni spletni strani in v aplikaciji merimo tudi obisk in uporabo s storitvijo Google Analytics; naloži se le, če sprejmete analitično kategorijo — do takrat od Googla ni nobene zahteve. Nobenega trženjskega orodja ne uporabljamo.

Preberi Politiko piškotkov