Esimene osaline, kellel on päris põhjus jagatud pettusesignaali rünnata, ei ole pettur. Ta on liige: pood kehtiva võtmega, õigel ajal makstud arve ja küsimus kellegi teise klientide kohta. Võti annab juba õiguse päringuid saata, seega on küsimus ühe päringu kaugusel. See artikkel räägib, miks see päring talle ei vasta.
Omadus
Iga kontroll on seotud päris tellimuse või sessiooni viitega, seega ei saa API-d kasutada otsinguvahendina. Vastused on kategooriad poe ees oleva tellimuse kohta, mitte kunagi kirjed. Ainus hulgierand on üks ajaloo skann Pro poe kohta, kuni 250 000 rida, ja see on allpool kirjas. Päring millegi kohta, mis kuulub teisele poele, vastatakse nii, nagu teda ei oleks.
Miks see kehtib
Esimesel ründajal on kehtiv võti
Jagatud võrgu ohumudel kipub algama perimeetrist, kellegagi väljast, kes püüab sisse saada. Huvitav rünne ei ole seal. Igaüks, kes selle API-ni jõuab, hoiab volitust, mille me andsime ettevõttele, kelle me kinnitasime, ja üks asjadest, mida selline liige võib tahta, on päris rünne: kõndida identifikaatorite ruumis, lugeda, mis tagasi tuleb, ja rekonstrueerida iga teise poe pettuseajalugu võrgustikus. Me nimetame teda realistlikuks esimeseks ründeks oma ohumudelis turvalehel, sest jagatud signaal, mis vastab identifikaatorite kohta küsimustele, on signaal, mida saab sõeluda.
Vastus sellele ei ole avastamine. Esimesed neli vastust on liidese kuju ise, sest päringu vormingu omadus hoiab, kas keegi vaatab või mitte.
Kontroll on millegi kohta, mis juhtus
Kontroll peab kandma päris tellimuse viidet või päris sessiooni viidet. Vähemalt üks peab olema, ja päringust, millel kumbagi ei ole, ei saa kunagi kontrolli: ta ebaõnnestub valideerimisel, enne kui midagi otsitakse, ja midagi tema kohta ei kirjutata. See üks nõue muudab, mida päring tähendab. Ta muudab „palun otsi see üles” lauseks „see juhtus minu kassas, ja teilt saab selle kohta küsida”.
Tellimuse viide ei ole kaunistus payloadil. Ta osutab saatja enda tellimuste tabelisse, ja saatjalt saab küsida tellimust, seega sondimine lakkab olemast tasuta küsimus ja saab väiteks sondija enda äri kohta. Viidete voog, millele keegi tellimust toota ei saa, ei ole päringulogi. See on lause poe kohta, kes ta saatis.
Kategooriad, mitte kirjed
Mis tagasi tuleb, kirjeldab poe ees olevat tellimust. See on skoor, hulk põhjuseid, kirjutatud sellele, kes seda tellimust käsitleb, ja läbipaistmatu alias sellele, millega kontroll vastas. Mida ta kunagi ei sisalda, on teise poe tõend: identifikaatorit mitte, räsi mitte, kellegi teise tellimuse viidet mitte, poe nime, kes sildi pani, mitte.
See teeb mahu kasutuks, mitte ainult kalliks. Sõelumine töötab, kui iga tera kannab natuke sellest, mida te otsite, nii et piisavalt terasid kuhjub pildiks. Siin kannab iga tera otsust küsija enda tellimuse kohta ja mitte fragmenti kellegi teise omast, seega tuhat neist koondub tuhandeks otsuseks küsija enda tellimuste kohta.
Joonis 1
Üks piiratud erand, ja stabiilset käepidet ei ole
Kontroll ei võta nimekirja, vahemikku ega filtrit, ja eksporti ei ole. See on disain: liides, mis vastab ühele ankurdatud küsimusele korraga, teeb ülevaate kulu lineaarseks kassade arvuga, mida ülevaataja peab suutma seletada, ja miski seal ei skaleeru ründaja kasuks.
Üks liides on ankurdusreeglist vabastatud, ja tema piirid on koodis kinni. Pro pood saab oma elu jooksul teha ühe ajaloo skanni: üks seanss kuni 250 000 minevikutellimusega, iga rida saab vastuseks strong, weak või none samasugustes kategooriates, ja ühtegi rida alles ei hoita. Need read ei ole ankurdatud kassasse, seega selle ühe seansi kohta astub ülal toodud kulu argumendi asemele kõva piir: üks seanss poe kohta, 250 000 rida, ja teine skann ainult pärast operaatori lähtestust, mis läheb koos põhjusega auditilogisse. Piirid on turvalehel.
Teine pool on alias. Kui kontroll millegagi vastab, kannab vastus läbipaistmatut käepidet, ja see käepide on poe kohta: sama jälg ilmub igale poele, kes teda näeb, teise identifikaatori all. Seega kaks liiget, kes märkmeid võrdlevad, ei saa öelda, kas neil on üks jälg või kaks, ja aliast ei saa poodide vahel stabiilseks võtmeks kuhjata. Ta on hea ainsa asja jaoks, milleks pood teda vajab, mis on äratundmine, et kaks tema enda tellimust puudutasid sama ajalugu.
404, mitte 403
Küsige teise poe tellimust ja vastus on 404 not_found, täpselt vastus tellimusele, mida pole kusagil kunagi olnud. Ilmne staatusekood on 403, ja ilmse vastu valimine ongi see kontroll.
403 tähendab see on olemas ja teile teda ei anta. See on üks bitt, ja üks bitt on kogu loetlemine: kõndige viidete ruumis, hoidke need, mis vastavad 403, ja te olete õppinud, millised viited on võrgustikus mujal päris. 404 tagastab sama tühja „sellist tellimust ei ole” ja „ei ole teie tellimus” kohta, seega kõnd lõpeb sama palju teabega, kui ta algas, ja sama ühetaolisus hoiab sisemisel liidesel, mida partneriportaal kasutab. Hind on vähem abivalmis viga integraatorile, kes kirjutas vale viite, ja see vahetus on teadlik.
Nende nelja taga istub üks käitumuslik meede, ja tema olemasolu on kogu see, mida temast avaldatakse: võti, kelle liiklus lakkab kassa liiklusena paistmast, külmutatakse ülevaatuseks.
Mida vältimine maksab
Mida sondiv liige peab kulutama
Iga sond on allkirjastatud päring teie enda võtme all, antud ettevõttele, kes allkirjastas lepingu, seega anonüümset positsiooni, kust küsida, ei ole. Iga sond kannab tellimuse viidet, mis on väide, et kassa juhtus teie poes, ja selline, millele teilt saab tellimust küsida. Ülevaade, mis nime kannab, on püsiv kirjalik kirje teie enda nime all paljudest kassadest, mida ei juhtunud.
Mida nad võidavad
Ühe kategooriavastuse ühe tellimuse kohta, mis neil juba oli. Mitte teise poe identifikaatoreid, mitte tema silte, mitte tema tõendit, mitte tema nime, ja mitte midagi, mis järgmise vastusega koonduks pildiks kellegi teise ärist. Ja sondimine mahus, mis teile midagi ütleks, on sama asi kui panna oma võti töötamast, seega kaks otsa ei kohtu kunagi: odav versioon ei õpi midagi, ja versioon, mis võiks midagi õppida, ei jää kättesaadavaks. Ainus kirjas erand on ajaloo skann: kord poe elus vastab ta kuni 250 000 reale, millest ühegi taga ei ole kassat.
Kuidas kontrollida
Mõlemad pooled on kontrollitavad teie enda võtmega, ja kumbki kontroll ei vaja midagi, mis kuulub kellelegi teisele. Esimene on ankur: saatke muidu kehtiv kontroll, millel kumbagi viidet ei ole.
# Signed for real, and with an Idempotency-Key: both are checked ahead of the
# payload, so a placeholder signature answers 401 and a missing key answers 400
# before the anchor rule ever gets a chance to speak.
curl -s -X POST https://api.heatrail.eu/v1/check \
-H "Content-Type: application/json" \
-H "Authorization: HR1 {key id}:{signature}" \
-H "Idempotency-Key: chk-verify-anchor-rule-01" \
-d '{"ip":"203.0.113.42"}'
# 422 invalid_payload. The details name order_ref and session_ref: at
# least one must be present. Nothing was looked up, nothing was stored.Teine on ühetaoline vastus. Küsige tellimuse viidet, mis kuulub teisele poele, siis küsige uuesti üht, mille te kohapeal leiutasite ja mis ei kuulu kellelegi.
curl -s https://api.heatrail.eu/v1/orders/ord-not-yours/explain \
-H "Authorization: HR1 {key id}:{signature}"
curl -s https://api.heatrail.eu/v1/orders/ord-nobody-has-this/explain \
-H "Authorization: HR1 {key id}:{signature}"
# 404 not_found, twice. Same status, same body. The reference that exists
# somewhere else and the reference that exists nowhere are one case.Selle staatusekoodi taga olev põhjendus on isolatsioonis turvalehel, ja ülal olevad väljanimed ja veakoodid on need API viites.
Õiguslik alus
Ankurdamine ja ainult kategooriavastused on eesmärgi piiramine GDPR artikli 5(1)(b) alusel ja andmete minimeerimine artikli 5(1)(c) alusel, jõustatud liideses, mitte lubatud poliitikas: päring, mis ei ole kassa kohta, mille saatja suudab arvestada, on valideerimisviga, ja vastusel ei ole ruumi teise poe kirjetel. Mõlemad on ka meede volitamata avalikustamise vastu artikli 32(1)(b) alusel. „Ei ole teie” ja „ei ole olemas” ühetaoline vastamine on sama meede veateel, kus süsteem, kes on oma õnnestunud vastustega hoolega, võib ikka keeldumiste kaudu lekkida. Vt andmetöötluslepingut ja usalduskeskust.
Seotud
- Identiteet ilma isikuteta, argumendi teine pool: identifikaator, mis ei saabu kunagi selge tekstina, on vähe kasu kellelegi, kes ei saa meilt tema kohta küsida.
- Jäljed, millele alias vastuses osutab, ja miks ta on ajaloo omadus, mitte kirje isiku kohta.
- Põhjused, mida saab lugeda, miks põhjus saab olla loetav ilma tõend olemata.
- Isolatsioon turvalehel, 404 otsuse täispikkus.