Buforuj klasyfikację VPN i zostaw jej wiek widoczny
Obserwacja, jej świeżość i odpowiedź Twojej witryny starzeją się w różnym tempie. Trzymane osobno, zbuforowana klasyfikacja pozostaje uczciwa co do tego, co wie.
Zbuforowana klasyfikacja oszczędza jedno wyszukanie i zamraża wczorajszą opinię w dzisiejszej decyzji. Prawdziwe porównanie nie jest bufor kontra brak bufora: to obserwacja, jej świeżość i odpowiedź, którą wybrała Twoja witryna. Zgub granicę między tymi trzema, a optymalizacja zacznie sama tworzyć politykę. Naprawą jest księgowość, nie lepszy kanał.
Trzy rekordy z trzema różnymi zegarami
Obserwacja to pole, które otrzymałeś, kanał, z którego przyszło, i wersja zestawu danych stojąca za nim. Świeżość to właściwość wpisu bufora: kiedy odbyło się wyszukanie, kiedy wpisowi przestaje się ufać i czy ostatnie odświeżenie coś zwróciło. Odpowiedź to to, co Twoja witryna robi z tym dla tego żądania, tego konta lub tej czynności. Tworzą je różni właściciele i rozkładają się w różnym tempie, dlatego jeden wiersz o nazwie blocked niszczy to rozróżnienie.
| 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 |
Dwa zegary zasługują na szczególną troskę. Moment, w którym odbyło się Twoje wyszukanie, nie jest momentem, w którym dostawca opublikował zestaw danych, a operator czytający wiersz później musi wiedzieć, z którego z tych dwóch pochodzi każda wartość. Ustaw wygaśnięcie i odświeżanie według udokumentowanego modelu aktualizacji kanału i według kosztu pomyłki, nigdy według liczby pożyczonej z innej witryny.
Zachowaj pole, nie wyrok
Dokumentacja MaxMind dotycząca anonimowych adresów IP jest jednym konkretnym przykładem kanału, który rozdziela anonimowy VPN, dostawcę hostingu, publiczne proxy i wyjście Tor na osobne pola. Dokumentuje też, że niezarejestrowana podsieć VPN może zamiast tego pojawić się pod flagą hostingu. Spłaszczenie tego do jednego boola wyrzuca jedyną część, którą operator mógłby później zaudytować.
Żaden kierunek wnioskowania nie jest bezpieczny. Etykieta hostingu nie dowodzi, że użyto tunelu, a brak flagi VPN nie dowodzi, że między klientem a Twoją usługą nic nie stało. To dwa różne twierdzenia, a jeden bool nie może wyrazić żadnego z nich.
Przypisz wpis do adresu, który zweryfikowałeś
Za odwrotnym proxy aplikacja musi używać obsługi adresu klienta zatwierdzonej przez wdrożenie. Nagłówek przekazywania dostarczony przez wywołującego nigdy nie może wybrać cudzej zbuforowanej reputacji.
Ta usterka jest jednocześnie błędem poprawności i bezpieczeństwa, ponieważ atakujący kontrolujący nagłówek może odziedziczyć zaufany wpis albo przypiąć ofiarę do złego. Wyprowadź klucz z połączenia zakończonego przez własną infrastrukturę i zapisz, którego wyprowadzenia użyto. Gdy z przodu stoi kilka proxy, udokumentuj łańcuch, zamiast ufać pierwszemu wiarygodnie wyglądającego nagłówkowi. Jeśli łańcuch jest niejednoznaczny, zapisz wyprowadzony klucz i odrzucony nagłówek, bo o ten drugi zapyta przegląd incydentu.
Brak dowodów nie jest czystym wynikiem
Przekroczenie czasu, zniekształcona odpowiedź i niedostępna baza danych znaczą każde coś innego niż udane wyszukanie, które niczego nie dopasowało. Przedstaw je jako osobne wyniki i zdecyduj z góry, co robi chroniona czynność, gdy nie ma żadnego dowodu. Strona tylko do czytania i czynność na zalogowanym koncie mogą tam rozsądnie podlegać innym regułom.
Zachowanie normalnego uwierzytelniania lub prośba o obsługiwane potwierdzenie jest zwykle lepszą odpowiedzią niż traktowanie awarii jako powszechnego pozwolenia lub zakazu dla całej witryny. Ogranicz, jak długo może trwać wyszukanie, i zatrzymaj burze odświeżeń mechanizmem, który obsługuje integracja. Gdy podczas awarii użyto nieaktualnej wartości, oznacz ją jako nieaktualną w punkcie decyzji i pokaż ostatnią porażkę odświeżenia, aby długotrwała usterka nie przeszła jako zdrowy wpis. Cokolwiek wybierzesz, zapisz to tam, gdzie polityka jest egzekwowana, a nie w komentarzu obok wyszukania.
Przechowywanie należy do tej samej decyzji: trzymaj pola, których potrzebuje ta funkcja, i ślad przeglądu za nimi, nic więcej. Bufor IP nie musi stać się historią przeglądania.
Zaakceptuj cztery przypadki, w tym poprawkę
Przetestuj świeży wynik, wynik przeterminowany, nieudane wyszukanie i klasyfikację poprawioną później. Każdy ćwiczy inną gałąź, a tylko ostatni pokazuje, czy błędne ograniczenie da się cofnąć.
Następnie potwierdź, że zwykły użytkownik ma drogę do poproszenia o przegląd po błędnej blokadzie, bo kanał czasem będzie błędny, a kolejka jest częścią projektu. Zapisz cztery przypadki w runbooku obok nazwiska właściciela polityki. Projekt zasługuje na swoje miejsce, gdy usuwa zbędne wyszukania, zachowując niepewność i sprawiając, że decyzja pozostaje widocznie w rękach człowieka.