Kur einam — SignFlow gyvai ir šešios fazės
Sveikas atvykęs į serverio pusės web kūrimą. Per šį kursą pastatysim SignFlow — tikrą, įdiegtą dokumentų pasirašymo programą — nuo tuščio aplanko iki gyvos svetainės.
Kur einam. SignFlow veikia jau dabar: signflow-production-67f3.up.railway.app. Atsidaryk. Užsiregistruoji, įkeli dokumentą, pakvieti pasirašytojus el. paštu, jie atsidaro privačią nuorodą ir pasirašo, o kiekvienas veiksmas patenka į papildomą-tik audito žurnalą. Tai ir yra baigta programa — ta, kurią pastatysi ir įdiegsi iki kurso pabaigos.
Kodėl verta ją statyti. Čia nieko žaislinio. Kelyje sutiksi tai, iš ko tikros serverio programos ir sudarytos:
- Serverio pusės sesijos HttpOnly slapuke (ne JWT — o 14 pamoka ir yra visas argumentas, kodėl pasirinkimas skiriasi nuo Pica mobiliosios programos, kurią galbūt statei).
- CSRF apsauga — įskaitant tą vieną 403 klaidą, kurią kiekvienas kūrėjas pagauna ir neteisingai supranta (6 pamoka).
- Failo įkėlimas, maišomas SHA-256 srautu į diską, kad parašas galėtų pririšti tikslius baitus.
- Papildomas-tik audito žurnalas, kurio perrašyti neleidžia pati duomenų bazė.
Sąžininga išlyga iš karto. „Parašas" SignFlow yra įvestas vardas + laiko žyma + dokumento SHA-256 maiša. Tai duoda klastojimo įrodymą — pakeisk vieną baitą pasirašytame faile ir programa pasakys — ir nieko daugiau. Tai ne tikroji viešojo rakto kriptografija, ne eIDAS kvalifikuotas parašas, ne įrodymas, kas pasirašė. Tikros parašų platformos susieja patikrintą tapatybę su kriptografiniais raktais. SignFlow sąmoningai sustoja ties vientisumu, kad mechanika liktų suprantama. Prie to sąžiningai grįšim 11 pamokoje, kur pamatysi, kaip suveikia klastojimo aptikimas.
Šešios fazės. SignFlow buvo statomas šešiomis fazėmis — toks ir šis kursas:
- Karkasas — veikiantis serveris (ši pamoka).
- Autentifikacija — sesijos, prisijungimas, CSRF, slaptažodžio atstatymas.
- Dokumentai — įkėlimas + maišymas + savininko skydelis.
- Pasirašymas — žetonuotos nuorodos, pasirašymas, klastojimo aptikimas.
- Audito žurnalas — papildomas-tik, užtikrintas duomenų bazės.
- Diegimas — Railway, Docker, pastovus diskas.
Technologijos: Go, Chi (maršrutizatorius), Templ (tipiškai saugus HTML), HTMX (interaktyvumas be build žingsnio), sqlc + goose (duomenų bazė) ir PostgreSQL. Jokio JavaScript karkaso — HTML atvaizduoja serveris.
Ši pamoka: karkasas. Iki pabaigos turėsi Go modulį, Chi maršrutizatorių, aplinka paremtą konfigūraciją ir puslapį, atsakantį adresu http://localhost:8080 — pamatą, ant kurio auga visa kita. Prasideda taip, kaip prasideda kiekvienas Go projektas:
go mod init github.com/programuoki/signflow