Αποθηκεύστε στην προσωρινή μνήμη την ταξινόμηση 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 με το όνομα του ιδιοκτήτη της πολιτικής δίπλα. Ο σχεδιασμός κερδίζει τη θέση του όταν αφαιρεί περιττές αναζητήσεις κρατώντας την αβεβαιότητα άθικτη και την απόφαση ορατά στην ιδιοκτησία ενός ανθρώπου.