Namų darbas — 403 prieš 404, ir sargas SQL
Augina programą. Suteik savo programai tą patį savininko paviršių arba dirbk su SignFlow.
-
Pajusk 403 prieš 404. Laikinai pakeisk
ownedDocument, kad imtų neapribota užklausa ir grąžintų403, kaidoc.OwnerID != me. Prisijunk kaip vartotojas B ir paprašyk vartotojo A ID — gauni 403, kuris patvirtina, kad ID tikras. Dabar grįžk prie savininkui apribotos užklausos + 404. Parašyk du sakinius, ką užpuolikas sužino kiekvienu atveju. -
Pašalink patikrą, palik sargą. Užkomentuok
if doc.Status != "draft"šakąDeleteDocument. Perjunk dokumentą įsentir bandyk jį ištrinti — UI mygtuko nerodys, tad sukurk POST ranka. Patvirtink, kadDeleteDraftDocumentpraneša nulį ištrintų eilučių ir dokumentas išlieka. Verslo taisyklė išsilaikė be valdiklio patikros, nes ji gyvenaWHERE. -
Atsisiuntimo vientisumas. Atsisiųsk dokumentą, paleisk
sha256sumfailui ir palygink su detalės puslapyje rodomufile_hash— jie sutampa. Dabar tiesiogiai suredaguok saugomą failąuploads/(pridėk baitą) ir atsisiųsk vėl: baitai pasikeitė, betfile_hashne. Ko reikėtų, kad aptiktum tą pokytį? (Būtent tokią patikrą pastatysi pasirašymo fazėje.) -
Neegzistuojantis ID. Paprašyk
/documents/not-a-uuidir/documents/00000000-0000-0000-0000-000000000000. Abu turi būti 404 — vienas todėl, kadparseUUIDjį atmeta prieš DB, kitas todėl, kad užklausa negrąžina eilučių. Patvirtink, kad nė vienas nepasiekiaserverError(jokio 500 žurnale).
Kita fazė: dokumentai nustoja būti privatūs — kviesi pasirašytojus el. paštu, o dokumentas juda iš draft į sent. Būtent ką tik pastatyta nekintamumo taisyklė daro tą perėjimą saugų.