Кэшуйце класіфікацыю VPN і захоўвайце яе ўзрост бачным
Назіранне, яго свежасць і адказ вашага сайта старэюць з рознай хуткасцю. Калі трымаць іх асобна, кэшаваная класіфікацыя застаецца сумленнай у тым, што яна ведае.
Кэшаваная класіфікацыя эканоміць адзін запыт і замарожвае ўчорашнюю думку ў сённяшняе рашэнне. Сапраўднае параўнанне — не кэш супраць адсутнасці кэша, а назіранне, яго свежасць і адказ, які абраў ваш сайт. Страціце мяжу паміж гэтымі трыма — і аптымізацыя пачне рабіць палітыку самастойна. Ратаванне тут — гэта ўлік, а не лепшая стужка.
Тры запісы з трыма рознымі гадзіннікамі
Назіранне — гэта поле, якое вы атрымалі, стужка, адкуль яно прыйшло, і версія набору даных, што за ім стаіць. Свежасць — уласцівасць запісу кэша: калі выконваўся запыт, калі запісу перастаюць давяраць і ці вярнула апошняе абнаўленне хоць штосьці. Адказ — гэта тое, што ваш сайт робіць з гэтым для гэтага запыту, гэтага акаўнта або гэтага дзеяння. Іх ствараюць розныя ўладальнікі, і яны старэюць з рознай хуткасцю, таму адзін радок пад назвай blocked знішчае гэтае размежаванне.
| Record | Who owns it | How long it should live | Damage when it is folded into another row |
|---|---|---|---|
| The observation | the feed's operator | until a newer dataset version replaces it | a stale lookup becomes indistinguishable from a fresh one |
| Its freshness | the application | one request's tolerance for age | a failed refresh hides behind a cache hit |
| The response | whoever owns the site policy | until that policy is reviewed | a feed outage turns into an indefinite block |
Два гадзіннікі заслугоўваюць асаблівай увагі. Момант, калі выконваўся ваш запыт, — гэта не момант, калі пастаўшчык апублікаваў набор даных, і аператару, які чытае радок пазней, трэба ведаць, з якога з двух пайшло кожнае значэнне. Задавайце тэрмін дзеяння і абнаўленне па дакументаванай мадэлі абнаўлення стужкі і па цане памылкі, ніколі — па ліку, пазычаным у іншага сайта.
Трымайце поле, а не вердыкт
Дакументацыя MaxMind па ананімных IP — гэта адзін канкрэтны прыклад стужкі, якая раздзяляе ананімны VPN, хостынг-правайдэра, публічны проксі і выхад Tor на асобныя палі. Яна таксама дакументуе, што незарэгістраваная падсетка VPN можа замест гэтага ўсплысці пад сцягам хостынгу. Сплашчванне гэтага ў адзін boolean выкідвае адзіную частку, якую аператар мог бы пазней прааўдытаваць.
Ні адзін кірунак вываду не бяспечны. Метка хостынгу не даказвае, што выкарыстоўваўся тунель, а адсутнасць сцяга VPN не даказвае, што паміж кліентам і вашым сэрвісам нічога не стаяла. Гэта два розныя сцверджанні, і адзін boolean не можа выказаць ні адно з іх.
Прывяжыце запіс да адраса, які вы праверылі
За зваротным проксі праграма павінна выкарыстоўваць апрацоўку адраса кліента, якую ўхваліла разгортванне. Загаловак перасылкі, прадастаўлены выклікаючым бокам, ніколі не павінен мець магчымасці выбраць чужую кэшаваную рэпутацыю.
Гэтая збоіна — адначасова памылка правільнасці і бяспекі, бо зламыснік, які кантралюе загаловак, можа атрымаць у спадчыну давераны запіс або прыкаваць ахвяру да дрэннага. Выводзьце ключ з злучэння, якое завяршыла ваша ўласная інфраструктура, і запісвайце, які вывад выкарыстоўваўся. Калі наперадзе некалькі проксі, дакументуйце ланцуг замест таго, каб давяраць першаму загалоўку, які здаецца праўдападобным. Калі ланцуг неадназначны, запішыце выведзены ключ і адхілены загаловак, бо менавіта другое спытаюць падчас разбору інцыдэнту.
Адсутнасць доказаў — не чысты вынік
Тайм-аўт, скажоны адказ і недаступная база даных кожны азначаюць нешта іншае, чым паспяховы запыт, які ні з чым не супаў. Прадстаўляйце іх як асобныя вынікі і загадзя вырашыце, што робіць ахоўнае дзеянне, калі доказаў няма зусім. Старонка толькі для чытання і дзеянне ўліковага запісу пасля ўваходу могуць разумна прытрымлівацца розных правілаў.
Захаванне звычайнай аўтэнтыфікацыі або просьба пра падтрыманую праверку — звычайна лепшы адказ, чым трактаваць збой як усеагульны дазвол ці як забарону для ўсяго сайта. Абмяжуйце, колькі часу можа выконвацца запыт, і спыняйце шквалы абнаўленняў любым механізмам, які падтрымлівае інтэграцыя. Калі падчас збою выкарыстоўваецца састарэлае значэнне, пазначце яго як састарэлае ў момант рашэння, і зрабіце бачнай апошнюю няўдачу абнаўлення, каб доўгая няспраўнасць не прайшла за здаровы запіс. Які б ні быў выбар, запішыце яго там, дзе выконваецца палітыка, а не ў каментары побач з запытам.
Захаванне належыць таму ж рашэнню: трымайце палі, патрэбныя гэтай функцыі, і след агляду за імі, не больш. Кэш IP не абавязаны станавіцца гісторыяй праглядаў.
Прыміце чатыры выпадкі, уключаючы выпраўленне
Праверце свежы вынік, вынік з скончаным тэрмінам, няўдалы запыт і класіфікацыю, якую пазней выправілі. Кожны задзейнічае розную галіну, і толькі апошні паказвае, ці можна адмяніць памылковае абмежаванне.
Затым пераканайцеся, што звычайны карыстальнік мае шлях папрасіць агляд пасля памылковай блакіроўкі, бо стужка часам будзе памыляцца, а чарга — частка дызайну. Запішыце чатыры выпадкі ў runbook побач з імем уладальніка палітыкі. Дызайн заслугоўвае свайго месца, калі ён прыбірае лішнія запыты, захоўваючы нявызначанасць і бачнасць таго, што рашэнне належыць чалавеку.