Pagina asta are două jumătăți, iar a doua e cea care contează mai mult. Prima spune ce facem. A doua spune ce nu pretindem, fiindcă o pagină de securitate care înșiră doar lucruri bune nu îți spune de fapt nimic: nu poți deosebi un proiect atent de unul care a scris o listă.
Ce facem
Baza de date refuză, ea însăși, să dea rândurile altui crescător. Nu interfața le ascunde, ci baza de date nu le dă. Fiecare tabel are regula pornită, fără excepții, iar asta nu e o setare pe care cineva își amintește să o aplice: o modificare care ar adăuga un tabel neprotejat oprește lucrul înainte să ajungă la tine. Regula e verificată la fiecare schimbare, de un test care citește chiar structura bazei de date și pică dacă găsește o scăpare.
Datele stau pe servere din Uniunea Europeană. Baza de date, contul tău și pozele porumbeilor tăi, toate în aceeași regiune.
Funcțiile de pe server verifică cine le cheamă, înainte să facă orice. Nici aici nu e vorba de bunăvoință: o funcție nouă care nu declară cum își verifică apelantul oprește build-ul, iar o excepție trebuie argumentată în scris înainte să treacă. Lipsa unei declarații nu trece drept alegere.
Cheia care poate ocoli toate regulile nu ajunge niciodată pe telefonul tău. Nu e livrată în aplicație, nu stă în site și nu poate fi scoasă din ce ai instalat. Trăiește doar acolo unde rulează codul nostru de pe server.
Cine mai atinge datele
Aplicația vorbește cu un singur loc din afară: site-ul federației, de unde poți să îți aduci rezultatele de cursă. Drumul acela are reguli scrise înainte să existe codul care îl parcurge, iar cele care contează pentru tine sunt trei.
Se pornește doar când apeși tu. Nu există nimic programat, nimic care să umble în fundal, nimic care să adune în avans.
Ne prezentăm cinstit. Cererea spune cine suntem și lasă o adresă de contact. Nu ne dăm drept un browser și nu ocolim nimic.
Păstrăm doar rândurile tale. Pagina cu rezultate e citită întreagă, dar din ea rămân la noi doar rândurile care sunt ale tale, plus datele despre cursă în sine. Numele, localitatea sau codul altui crescător nu se scriu nicăieri, iar clasamentul nu e reconstruit la noi.

Ce nu pretindem
Nu există un audit de securitate extern. Nimeni din afara proiectului nu a fost plătit să încerce să spargă aplicația asta și să scrie un raport despre ce a găsit. E o lipsă reală și o scriem aici fiindcă alternativa e ca pagina de față să lase impresia contrară prin tăcere.
Ce înseamnă asta pentru tine: garanțiile de mai sus sunt verificate de teste care rulează la fiecare schimbare, nu de un profesionist care a căutat ce nu ne-a trecut prin cap să testăm. Cele două lucruri nu se înlocuiesc. Un test dovedește că ce am gândit funcționează; un audit caută ce nu am gândit.
Ce nu înseamnă: că nu s-a uitat nimeni. La fiecare schimbare trimisă spre publicare pornește o bază de date adevărată, iar pe ea rulează o suită care încearcă, dintr-un cont, să citească datele altuia. Dacă reușește o singură dată, schimbarea nu trece.
Când va exista un audit extern, o să scrie aici cine l-a făcut și când. Până atunci, aici scrie că nu există.
Dacă găsești o problemă
Scrie la contact@thatpigeon.app. Nu e o adresă de suport deghizată în adresă de securitate: e omul care scrie aplicația. Spune ce ai găsit și cum se reproduce, iar dacă e ceva serios, spune-ne înainte să spui altcuiva și îți lăsăm timpul de care ai nevoie.
Mai departe
Modelul de securitate cu mecanismele lui, numele suitelor care îl verifică și pașii prin care poți confirma singur fiecare afirmație de mai sus sunt în securitatea din documentația tehnică.