Кеширайте класификацията на 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 подмрежа може вместо това да изплува под флага за хостинг. Събирането на това в един булев израз изхвърля единствената част, която операторът би могъл по-късно да одитира.
Нито една посока на извод не е безопасна. Етикетът за хостинг не доказва, че е използван тунел, а липсата на флаг за VPN не доказва, че нищо не е стояло между клиента и услугата ви. Това са две различни твърдения и един булев израз не може да изрази нито едно от тях.
Вържете записа към адреса, който сте проверили
Зад обратен прокси приложението трябва да използва обработката на клиентски адрес, която внедряването е одобрило. Заглавка за препращане, предоставена от извикващия, никога не бива да може да избере чужда кеширана репутация.
Този провал е едновременно дефект по коректност и по сигурност, защото нападател, който контролира заглавката, може да наследи доверен запис или да прикове жертва към лош. Извеждайте ключа от връзката, която собствената ви инфраструктура е завършила, и записвайте кое извеждане е използвано. Когато отпред стоят няколко проксита, документирайте веригата, вместо да се доверявате на първата заглавка, която изглежда правдоподобна. Ако веригата е двусмислена, запишете изведения ключ и заглавката, която сте отхвърлили, защото именно второто ще пита прегледът на инцидент.
Липсата на доказателство не е чист резултат
Таймаут, деформиран отговор и недостъпна база данни означават всяко нещо различно от успешно търсене, което не е съвпаднало с нищо. Представяйте ги като отделни изходи и решете предварително какво прави защитеното действие, когато няма никакво доказателство. Страница само за четене и действие в профил след вход могат разумно да следват различни правила.
Запазването на нормално удостоверяване или искането за поддържана проверка обикновено е по-добър отговор, отколкото да третирате прекъсване като всеобщо разрешение или като забрана за целия сайт. Ограничете колко дълго може да тече търсене и спрете бурите от обновявания с какъвто механизъм поддържа интеграцията. Когато по време на прекъсване се използва остаряла стойност, маркирайте я като остаряла в точката на решението и направете последния провал на обновяването видим, за да не може дълга неизправност да мине за здрав запис. Какъвто и да е изборът, запишете го там, където се налага политиката, а не в коментар до търсенето.
Съхранението принадлежи към същото решение: пазете полетата, които тази функция изисква, и следата за преглед зад тях, нищо повече. Кешът на IP адреси не е длъжен да стане история на сърфирането.
Приемете четири случая, включително корекция
Тествайте свеж резултат, изтекъл резултат, неуспешно търсене и класификация, коригирана по-късно. Всеки от тях упражнява различен клон и само последният показва дали погрешно ограничение може да бъде отменено.
След това потвърдете, че обикновеният потребител има път да поиска преглед след погрешно блокиране, защото емисията понякога ще греши, а опашката е част от дизайна. Запишете четирите случая в runbook до името на собственика на политиката. Дизайнът заслужава мястото си, когато премахва излишните търсения, като запазва несигурността и решението остава видимо притежавано от човек.