Μια προσωρινή μνήμη δίπλα στον διακομιστή VPN ακούγεται σαν δωρεάν εύρος ζώνης για όλους πίσω από τη σήραγγα. Δεν είναι, γιατί τα byte που περνούν από εκείνο το σημείο παραμένουν προστατευμένα από συνεδρία TLS με άκρα το πρόγραμμα περιήγησης και τον ιστότοπο. Η πύλη VPN αφαιρεί μόνο τη δική της εξωτερική κρυπτογράφηση, όχι της εφαρμογής. Αποφασίστε ποιο επαναλαμβανόμενο αντικείμενο θέλετε να επαναχρησιμοποιήσετε πριν προσθέσετε υλικό.

Η συνεδρία TLS ανήκει στο πρόγραμμα περιήγησης

Στο συνηθισμένο HTTPS το πρόγραμμα περιήγησης διαπραγματεύεται κλειδιά με τον ιστότοπο και κάθε εγγραφή μετά τη χειραψία κρυπτογραφείται για αυτό το ζεύγος άκρων. Μια πύλη VPN αποκρυπτογραφεί τη σήραγγα που δημιούργησε και μετά προωθεί αδιαφανείς εγγραφές TLS. Βλέπει προορισμούς, χρονισμό και όγκο, όχι τη γραμμή αιτήματος ή το σώμα της απόκρισης. Αυτό είναι το όριο με το οποίο πρέπει να ζει κάθε προσωρινή μνήμη.

Κάθε σχεδίαση που το παραβιάζει είναι σχεδίαση υποκλοπής TLS, με δικές της συνέπειες στην εμπιστοσύνη πιστοποιητικών και τη διαχείριση συσκευών.

Το CONNECT είναι σήραγγα, όχι προσωρινή μνήμη

Ένας ρητός μεσολαβητής προώθησης συνήθως λαμβάνει αίτημα HTTP CONNECT και μετά αναμεταδίδει byte και προς τις δύο κατευθύνσεις. Η αναμετάδοση είναι η λέξη-κλειδί: ο μεσολαβητής δεν αναλύει την κρυπτογραφημένη συνομιλία.

curl -sSI -x http://proxy.example:3128 https://example.com/

Οι κεφαλίδες απόκρισης προέρχονται από τον χειρισμό της σήραγγας από τον μεσολαβητή, όχι από αποθηκευμένο αντίγραφο της σελίδας. Ένα επιτυχές CONNECT σημαίνει ότι η διαδρομή λειτουργεί, όχι ότι αποθηκεύτηκε κάτι για επαναχρησιμοποίηση. Κατευθύνοντας τη θύρα 443 σε προσωρινή μνήμη δεν το διδάσκει ούτε να μιλά TLS, γιατί η προσωρινή αποθήκευση απαιτεί αναγνώσιμα μηνύματα. Η διαμόρφωση του πελάτη πρέπει να χρησιμοποιεί τη υποστηριζόμενη ρητή ρύθμιση μεσολαβητή αντί για ανεξήγητη ανακατεύθυνση.

Αποθηκεύστε ό,τι διαχειρίζεστε, όχι ό,τι περιηγείστε

Όπου το περιεχόμενο είναι δικό σας, ένας αντίστροφος μεσολαβητής μπορεί να τερματίσει το TLS και να αποθηκεύσει σκόπιμα εγκεκριμένες αποκρίσεις. Όπου ανήκει σε αποθετήριο πακέτων, χρησιμοποιήστε τον καθρέφτη που υποστηρίζει το έργο.

nginx -T | grep -n "proxy_cache"
curl -sSI https://mirror.example/pkg/index.json | grep -i -E "cache-control|age"

Η πρώτη εντολή δείχνει αν έχει ρυθμιστεί ζώνη προσωρινής μνήμης και πού εφαρμόζεται, ενώ η δεύτερη δείχνει τις δικές της οδηγίες προσωρινής αποθήκευσης για ένα αντικείμενο. Μια κοινόχρηστη προσωρινή μνήμη πρέπει να σέβεται τη φρεσκάδα, τους ελέγχους προσωρινής μνήμης και τα χαρακτηριστικά αιτήματος που διακρίνουν αναπαραστάσεις; private και no-store σημαίνουν διαφορετικά πράγματα και κανένα δεν πρέπει να αφαιρείται για να αυξηθεί το ποσοστό επιτυχιών. Οι κανόνες προσωρινής αποθήκευσης HTTP περιορίζουν επίσης την αποθήκευση αποκρίσεων σε πιστοποιημένα αιτήματα, και εκεί ακριβώς μια εξατομικευμένη σελίδα γίνεται έκθεση δεδομένων. Κρατήστε τον μεσολαβητή περιορισμένο σε εγκεκριμένους πελάτες αντί να εκθέτετε ανοιχτό αναμεταδότη.

Μετρήστε την επιτυχία, όχι το χρονόμετρο

Ένα γρηγορότερο δεύτερο αίτημα δεν αποδεικνύει ότι η νέα προσωρινή μνήμη έκανε κάτι, γιατί τα προγράμματα περιήγησης και τα λειτουργικά συστήματα αποθηκεύουν επιθετικά μόνα τους. Ζητήστε από τον μεσολαβητή μετρητές επιτυχιών και αποτυχιών και παρακολουθήστε την κίνηση του αρχικού διακομιστή σε μια ελεγχόμενη επανάληψη. Χρησιμοποιήστε μία επαναλαμβανόμενη λήψη γνωστού αντικειμένου, με την προσωρινή μνήμη ενεργή και μετά παρακαμπτόμενη, και συγκρίνετε τα byte που σέρβιρε ο αρχικός διακομιστής αντί για τον χρόνο. Έπειτα ελέγξτε το όριο εξουσιοδότησης: ένας πόρος που απαιτεί σύνδεση δεν πρέπει να σερβίρεται σε άλλον πελάτη.

Καταγράψτε τον φόρτο, το κλειδί προσωρινής μνήμης και την πολιτική που επέτρεψε την επαναχρησιμοποίηση. Η προσωρινή μνήμη είναι απόφαση κοινής χρήσης δεδομένων με στολή βελτιστοποίησης.

Σχετικά άρθρα