Tema
/
Interneto svetainių serverio dalies kūrimas GO
📖 Teorija

Namų darbas — vienkartiškumas SQL, ir įspėjimas savais žodžiais

Augina programą. Suteik savo programai klastojimui atsparų artefaktą, jei ji tokį turi, arba dirbk su SignFlow.

  1. Įrodyk vienkartiškumą SQL. Atverk psql ir paleisk UPDATE signers SET status='signed', signed_at=now() WHERE id='<laukiantis pasirašytojas>'; — tada bandyk pasirašyti tą nuorodą. Gauni pasirašytą būseną, ne klaidą, o SignSigner praneša nulį eilučių. Paaiškink vienu sakiniu, kodėl WHERE status='pending' sargyba daro pasirašymą idempotentišką be jokios Go apskaitos.

  2. Perskaičiuoti prieš pasitikėti. Sign laikinai rašyk doc.FileHash į signed_doc_hash vietoj integ.CurrentHash. Dabar suklastok failą ir pasirašyk. Ką užrašo parašas? Kodėl tai melas ir kodėl perskaičiavimas iš baitų tai ištaiso? Atkurk.

  3. Užbaigimo riba. Išsiųsk dokumentą trims pasirašytojams. Pasirašyk kaip du iš jų ir patikrink dokumento statusą (sent). Pasirašyk kaip trečias ir patikrink vėl (completed). Pažiūrėk į žurnalo eilutės remaining= skaičių per tris pasirašymus. Kur tiksliai įvyksta užbaigimas — ir kodėl jis toje pačioje transakcijoje kaip paskutinis parašas?

  4. Pasakyk įspėjimą savais žodžiais. Trimis sakiniais parašyk, kas šis parašas yra ir tris dalykus, kas jis nėra. Tada įvardyk vieną tikrą situaciją, kur klastojimo įrodymo pakanka, ir vieną, kur ne (ir reikėtų kvalifikuoto/eIDAS parašo). Tai sąžiningumas, ant kurio pastatyta pamoka.

Kita pamoka daro kiekvieną šį būsenos pokytį nuolatinį: papildomas-tik audito pėdsakas, užtikrintas pačios duomenų bazės — tad „kas ką padarė ir kada" išlieka net ištrynus dokumentą, kurį jis aprašo.