Uložená klasifikace ušetří jedno vyhledání a zamrazí včerejší názor do dnešního rozhodnutí. Skutečné srovnání není mezipaměť proti její nepřítomnosti: je to pozorování, jeho čerstvost a reakce, kterou si váš web zvolil. Ztratíte-li hranici mezi těmito třemi, optimalizace začne sama dělat politiku. Oprava je účtování, ne lepší kanál.

Tři záznamy se třemi různými hodinami

Pozorování je pole, které jste dostali, kanál, odkud přišlo, a verze datové sady, která za ním stojí. Čerstvost je vlastnost záznamu mezipaměti: kdy se vyhledání spustilo, kdy se záznamu přestane věřit a zda poslední obnovení něco vrátilo. Reakce je to, co váš web s tím dělá pro tento požadavek, tento účet nebo tuto akci. Vytvářejí je různí vlastníci a chátrají různým tempem, a proto jeden řádek nazvaný blocked ničí ten rozdíl.

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

Dvě hodiny si zaslouží zvláštní péči. Okamžik, kdy se vaše vyhledání spustilo, není okamžik, kdy poskytovatel zveřejnil datovou sadu, a operátor, který řádek později čte, musí vědět, ze kterých z těch dvou každá hodnota pochází. Nastavte expiraci a obnovení podle dokumentovaného modelu aktualizace kanálu a podle ceny chyby, nikdy podle čísla vypůjčeného z jiného webu.

Zachovejte pole, ne verdikt

Dokumentace MaxMind k anonymním IP adresám je jeden konkrétní příklad kanálu, který odděluje anonymní VPN, poskytovatele hostingu, veřejný proxy a výstup Tor do samostatných polí. Také dokumentuje, že neregistrovaná podsíť VPN se místo toho může objevit pod příznakem hostingu. Zploštění toho do jednoho booleanu zahazuje jedinou část, kterou by operátor mohl později auditovat.

Ani jeden směr odvození není bezpečný. Štítek hostingu neprokazuje, že byl použit tunel, a nepřítomnost příznaku VPN neprokazuje, že mezi klientem a vaší službou nic nestálo. To jsou dvě různá tvrzení a jediný boolean nemůže vyjádřit ani jedno z nich.

Přivažte záznam k adrese, kterou jste ověřili

Za reverzním proxy musí aplikace používat zpracování klientské adresy, které nasazení schválilo. Předávací hlavička poskytnutá volajícím nesmí nikdy moci vybrat cizí uloženou reputaci.

Tato porucha je zároveň chybou správnosti i bezpečnosti, protože útočník, který ovládá hlavičku, může zdědit důvěryhodný záznam nebo připoutat oběť ke špatnému. Odvozujte klíč ze spojení, které ukončila vaše vlastní infrastruktura, a zaznamenejte, které odvození bylo použito. Když je vpředu několik proxy, dokumentujte řetěz místo důvěry první hlavičce, která vypadá věrohodně. Je-li řetěz nejednoznačný, zaznamenejte odvozený klíč a hlavičku, kterou jste odmítli, protože právě na druhou se zeptá vyšetřování incidentu.

Žádný důkaz není čistý výsledek

Časový limit, deformovaná odpověď a nedostupná databáze znamenají každý něco jiného než úspěšné vyhledání, které nic neodpovídalo. Reprezentujte je jako samostatné výsledky a předem rozhodněte, co chráněná akce dělá, když není vůbec žádný důkaz. Stránka jen pro čtení a akce v přihlášeném účtu se tam mohou rozumně řídit jinými pravidly.

Zachovat běžné ověřování nebo požádat o podporované ověření je obvykle lepší odpověď než považovat výpadek za plošné povolení nebo za zákaz pro celý web. Ohraničte, jak dlouho smí vyhledání běžet, a zastavte bouře obnovování mechanismem, který integrace podporuje. Když se během výpadku použije zastaralá hodnota, označte ji jako zastaralou v místě rozhodnutí a zviditelněte poslední selhání obnovení, aby dlouhotrvající závada nemohla projít jako zdravý záznam. Ať je volba jakákoli, zapište ji tam, kde se politika vynucuje, ne do komentáře vedle vyhledání.

Uchovávání patří ke stejnému rozhodnutí: držte pole, která tato funkce potřebuje, a stopu po kontrole za nimi, nic víc. Mezipaměť IP adres se nemusí stát historií prohlížení.

Přijměte čtyři případy, včetně opravy

Otestujte čerstvý výsledek, propadlý výsledek, neúspěšné vyhledání a klasifikaci, která byla později opravena. Každý procvičuje jinou větev a jen poslední ukazuje, zda lze mylné omezení zrušit.

Pak potvrďte, že běžný uživatel má cestu požádat o kontrolu po chybném zablokování, protože kanál bude někdy chybný a fronta je součástí návrhu. Zapište čtyři případy do runbooku vedle jména vlastníka politiky. Návrh si zaslouží své místo, když odstraní nadbytečná vyhledání a přitom zachová nejistotu a rozhodnutí zůstane viditelně v rukou člověka.

Související články