Σε αυτό το άρθρο του οδηγού ασφαλείας Spring, θα επιθεωρήσουμε το Κεφαλίδες ελέγχου κρυφής μνήμης Spring Security. Θα εξετάσουμε την προεπιλεγμένη συμπεριφορά της Spring Security μαζί με έναν τρόπο αλλαγής των κεφαλίδων ελέγχου της κρυφής μνήμης στο Spring Security.
Spring Security Cache Control Headers
Η ασφάλεια περιλαμβάνει πολλές προφυλάξεις για την αποθήκευση των δεδομένων. Υπάρχουν ορισμένες προεπιλεγμένες κεφαλίδες που έχουν προστεθεί από την ασφάλεια Spring για την απενεργοποίηση της προσωρινής αποθήκευσης για την προστασία του περιεχομένου χρήστη. Οι κεφαλίδες ελέγχου προσωρινής μνήμης παρέχουν πολλά πλεονεκτήματα, τα οποία περιλαμβάνουν:
- Αποθηκεύστε προσωρινά δεδομένα τοπικά από το πρόγραμμα περιήγησης για να αποφύγετε τα άλματα δικτύου.
- Χαμηλή καθυστέρηση.
- Μειώστε το φόρτο του διακομιστή με την εξυπηρέτηση των καταστημάτων περιεχομένου τοπικά στα προγράμματα περιήγησης.
Χρησιμοποιώντας αποτελεσματικά τις κεφαλίδες ελέγχου κρυφής μνήμης ασφαλείας ελατηρίου, θα μας βοηθήσει να επιτύχουμε τους παραπάνω στόχους. Η Spring Security παρέχει ευελιξία για την παράκαμψη των κεφαλίδων που ορίζονται από την ασφάλεια Spring για να επιτρέπεται η προσωρινή αποθήκευση στατικών περιεχομένων (όπως CSS, JavaScript κ.λπ.). Εκτελέστε την εφαρμογή ασφαλείας Spring που είναι διαθέσιμη στο Αποθετήριο GitHub και ανοίξτε τη σελίδα σύνδεσης. Εάν ελέγξετε το αίτημα HTTP, το αποτέλεσμα cache-control
η κεφαλίδα θα μοιάζει με αυτό:

Εδώ είναι η προεπιλογή cache-control
κεφαλίδα που προστέθηκε από την ασφάλεια Spring:
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Λάβετε υπόψη ότι, εάν η εφαρμογή μας παρέχει αυτές τις κεφαλίδες με κάποιες άλλες τιμές, οι κεφαλίδες ελέγχου κρυφής μνήμης ασφαλείας Spring θα είναι ξανά εκτός λειτουργίας και θα επιτρέψουν στις προσαρμοσμένες κεφαλίδες μας να έχουν προτεραιότητα.
1. Απενεργοποίηση κεφαλίδων ελέγχου προσωρινής μνήμης
Η ασφάλεια ελατηρίου παρέχει πλήρη έλεγχο σε αυτές τις κεφαλίδες ελέγχου προσωρινής μνήμης. Σε περίπτωση που θέλουμε να απενεργοποιήσουμε αυτές τις κεφαλίδες ελέγχου της κρυφής μνήμης στην απόκριση HTTP, μπορούμε εύκολα να το κάνουμε χρησιμοποιώντας την κλάση διαμόρφωσης ασφαλείας:
@EnableWebSecurity
public class AppSecurityConfig extends
WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) {
http
.headers(headers -> headers
.cacheControl(cache -> cache.disable())
);
}
}
Η απενεργοποίηση ολόκληρων των κεφαλίδων ελέγχου της προσωρινής μνήμης δεν είναι μια συνιστώμενη προσέγγιση και θα πρέπει να την αποφύγουμε
2. Προσαρμόστε τις κεφαλίδες ελέγχου προσωρινής μνήμης
Τις περισσότερες φορές, δεν θέλουμε να απενεργοποιήσουμε τις κεφαλίδες ελέγχου της κρυφής μνήμης ασφαλείας Spring, αλλά μπορεί να θέλουμε να προσαρμόσουμε αυτές τις κεφαλίδες ελέγχου προσωρινής μνήμης ανά ενέργεια παρακάμπτοντάς τις χρησιμοποιώντας το HttpServletResponse
.
@GetMapping("/home")
public String home(HttpServletResponse response){
response.setHeader("Cache-Control", "no-transform, public, max-age=86400");
return "index";
}
Περίληψη
Σε αυτό το άρθρο, είδαμε τον τρόπο ελέγχου και προσαρμογής των κεφαλίδων ελέγχου της προσωρινής μνήμης στην ασφάλεια Spring. Μάθαμε ότι η Spring Security προσθέτει αυτόματα αυτές τις κεφαλίδες, αλλά παρέχει επίσης ευελιξία για την προσαρμογή αυτών των κεφαλίδων ελέγχου προσωρινής μνήμης για την εφαρμογή μας.