Varnost nam je zelo pomembna tema. Za njo imam svetovalca (spodaj na http://refaktorlabs.com) in stalno delamo na tem ker absolutne varnosti ni (tudi če imaš podatke na lokalnem računalniku) in našo stalno izboljšujemo. Strankam, ki jih je to zanimalo sem poslal opis sistema, kako tehnično skrbimo za to in kakšni so naši načrti za naprej.
Varnost podatkov pred mano: Najprej moram definirat kaj pomeni "mano". Gesla do serverja imam samo jaz, noben drug v ekipi, kakšen tretji administrator ali kdorkoli. Tako da govorimo res o meni. Pred mano pa podatki tehnično gledano ne morejo biti varni, ker kdor ima dostop do strežnika in kode ki dostopa do podatkov ne more nikoli trditi ne more imeti dostopa do podatkov (***).
To še posebej nima veze z HTTPS / SSL kot dajo slutiti nekatere (tuje) SaaS storitve, in tudi nima veze z enkripcijo podatkov, če se ta izvaja na serverju (enkripcija podatkov na serverju pomaga samo pri točno specifičnih napadih (ne pred lastniki serverja) a tudi to je zelo omejeno (nikakor ni absolutna rešitev), odvisno kje so ključi za dekripcijo (lahko več o tem če koga zanima). Običajno se enkripcija/dekripcija dogaja na serverju, ker mora program na serverju dostopati do podatkov da deluje.
Tako da pred mano osebno podatki niso varni in ne morejo biti. Bi pa veliko rajši videl da bi obstajal način da bi bili, ker moj motiv in zakaj delam je da imam zadovoljne stranke ki plačujejo za storitev, ne da gledam kaj uporabniki pišejo na račune in so mi ti podatki skrb oz tveganje.
Na začetku sem imel web-admin interface čebelce, kjer smo videli naslove podjetij uporabnikov, da smo jim lahko poslali račune in podobno. Potem sem ukinili tudi to, tako da imamo samo shell skripte na nivoju strežnika da vidimo koliko dokumentov ima kdo in kdaj se je nazadnje loginal (da vidimo če je aktiven) in mu lahko pošljemo račun.
*** Edin način kako zavarovati podatke pred mano, in mene rešiti tega bremena, je "zero knowledge" na serverju, kjer se enkripcija dogaja v celoti na clientu (javascript, kar je sedaj možno z neko zanesljivostjo) in tudi ključi niso nikoli posredovani serverju ampak se generirajo iz user inputa direktno na clientu. Pri tem ne moreš nujno enkriptati vsega, ker v tem primeru server dobesedno nikoli ne vidi ničesar o podatkih ki jih shranjuje in jih ne more procesirati. Odvisno od aplikacije. Pri nas je večina kode na clientu tako da bo kaj takega možno. Tudi tu niso stvari 100% absolutne ker kdor kontrolira client kodo kontrolira varnost in tuhtamo o shemi 3rd party preverjanja kode (ki se plača direkt s strani uporabnikov, ne nas, da so motivi pravilno naravnani). To je mogoče overkill, ker prinese tudi določene UX omejitve, a o njem razmišljamo ker bi kaj takega potrebovala npr podjetja ki se ukvarjajo z zdravstvom. Kjer niso najbol ključen podatek sami računi oz poslovanje, ampak zdravstveni podatki strank tistega podjetja. (V tem primeru če uporabnik izgubi geslo ni teoretične možnosti da pride do podatkov)
To bo na voljo vsem uporabnikom ko bo narejeno. Moja teorija je da varnosti nikoli ne pogojujemo s ceno ampak vsem damo najboljše kar lahko
Vem da sem se preveč razpisal, a varnost je zelo kompleksna tema in težko povem kaj na kratko.
// edit: jaz ti nisem dal minusa. sicer malo težko odgovorim kako so podatki varni pred mano, ampak kot vedno, mislim, da so vsa vprašanja dovoljena in dobrodošla. Na splošno in še posebej pri varnosti je vedno dobro da imajo vse strani čimboljšo in čimbolj realno sliko o stvari.