En cachet klassificering sparer et opslag og fryser gårsdagens mening ind i dagens beslutning. Den rigtige sammenligning er ikke cache mod ingen cache: det er en observation, dens friskhed og det svar dit site valgte. Mister du grænsen mellem de tre, begynder en optimering at lave politik på egen hånd. Reparationen er bogføring, ikke et bedre feed.

Tre poster med tre forskellige ure

En observation er det felt, du modtog, det feed det kom fra, og den dataversion der ligger bag. Friskhed er en egenskab ved cacheposten: hvornår opslaget kørte, hvornår posten ikke længere stoles, og om den seneste opdatering returnerede noget. Svaret er, hvad dit site gør ved det for denne anmodning, denne konto eller denne handling. De produceres af forskellige ejere og forfalder i forskelligt tempo, og derfor ødelægger én række kaldet blocked forskellen.

RecordWho owns itHow long it should liveDamage when it is folded into another row
The observationthe feed's operatoruntil a newer dataset version replaces ita stale lookup becomes indistinguishable from a fresh one
Its freshnessthe applicationone request's tolerance for agea failed refresh hides behind a cache hit
The responsewhoever owns the site policyuntil that policy is revieweda feed outage turns into an indefinite block

To ure fortjener særlig omhu. Det øjeblik, dit opslag kørte, er ikke det øjeblik, udbyderen offentliggjorde datasættet, og en operatør, der læser rækken senere, skal vide, hvilken af de to hver værdi kom fra. Sæt udløb og opdatering efter feedets dokumenterede opdateringsmodel og efter prisen for at tage fejl, aldrig efter et tal lånt fra et andet site.

Behold feltet, ikke dommen

MaxMinds dokumentation om anonyme IP-adresser er et konkret eksempel på et feed, der skiller anonym VPN, hostingudbyder, offentlig proxy og Tor-exit i separate felter. Det dokumenterer også, at et uregistreret VPN-subnet i stedet kan dukke op under hostingflaget. At flade det ud til én boolean smider den eneste del væk, som en operatør senere kunne revidere.

Ingen af slutningsretningerne er sikre. Et hostingmærke beviser ikke, at en tunnel blev brugt, og fraværet af et VPN-flag beviser ikke, at der ikke sad noget mellem klienten og din tjeneste. Det er to forskellige påstande, og én boolean kan ikke udtrykke nogen af dem.

Bind posten til den adresse, du har verificeret

Bag en omvendt proxy skal applikationen bruge den klientadressehåndtering, som udrulningen har godkendt. Et videresendelseshoved, som kalderen leverer, må aldrig kunne vælge en andens cachede omdømme.

Den fejl er både en korrekthedsfejl og en sikkerhedsfejl, fordi en angriber, der kontrollerer hovedet, kan arve en betroet post eller fastlåse et offer til en dårlig. Udled nøglen fra den forbindelse, din egen infrastruktur afsluttede, og registrér, hvilken udledning der blev brugt. Når flere proxier står foran, dokumentér kæden i stedet for at stole på det første hoved, der ser plausibelt ud. Er kæden tvetydig, log den udledte nøgle og det hoved, du afviste, fordi det andet er det, en hændelsesgennemgang vil spørge om.

Ingen beviser er ikke et rent resultat

En timeout, et fejlformet svar og en utilgængelig database betyder hver noget andet end et vellykket opslag, der ikke matchede noget. Repræsenter dem som separate udfald, og beslut på forhånd, hvad den beskyttede handling gør, når der slet ikke er beviser. En skrivebeskyttet side og en handling på en konto, der er logget ind, kan med rimelighed følge forskellige regler der.

At beholde normal godkendelse eller bede om en understøttet verifikation er normalt et bedre svar end at behandle et udfald som blanket tilladelse eller som en sitebred udelukkelse. Begræns, hvor længe et opslag må køre, og stop opdateringsstorme med den mekanisme, integrationen understøtter. Når en forældet værdi bruges under et udfald, mærk den som forældet på beslutningspunktet, og gør opdateringens seneste fejl synlig, så en langvarig fejl ikke kan gå for en sund post. Uanset valget skal det skrives der, hvor politikken håndhæves, ikke i en kommentar ved siden af opslaget.

Opbevaring hører til samme beslutning: behold de felter, denne funktion har brug for, og revisionssporet bag dem, ikke mere. En IP-cache behøver ikke blive en browserhistorik.

Accepter fire tilfælde, inklusive en rettelse

Test et friskt resultat, et udløbet resultat, et mislykket opslag og en klassificering, der senere blev rettet. Hvert tilfælde øver en anden gren, og kun det sidste viser, om en fejlagtig begrænsning kan fortrydes.

Bekræft derefter, at en almindelig bruger har en vej til at bede om gennemgang efter en forkert blokering, fordi feedet nogle gange tager fejl, og køen er en del af designet. Skriv de fire tilfælde ind i runbooken med politikejerens navn ved siden af. Designet fortjener sin plads, når det fjerner overflødige opslag, mens usikkerheden holdes intakt, og beslutningen tydeligt ejes af et menneske.

Relaterede artikler