Γεννήτρια κατακερματισμού SRI
Δημιουργήστε κατακερματισμούς Subresource Integrity (SRI) sha384 για αρχεία JavaScript ή CSS και αντιγράψτε έτοιμα τα integrity και crossorigin, τοπικά.
Επικολλήστε το περιεχόμενο του αρχείου ή ανοίξτε το ίδιο το αρχείο: το εργαλείο δεν κατεβάζει διευθύνσεις URL. Για να διαβαστεί ένα script από άλλον ιστότοπο, θα έπρεπε ο διακομιστής του να το επιτρέπει (CORS) ή να υπάρχει δικός μας διακομιστής που θα το έφερνε για εσάς, ενώ ό,τι κατακερματίζετε εδώ δεν φεύγει ποτέ από το πρόγραμμα περιήγησής σας. Κατακερματίστε το ακριβές αρχείο που θα σερβίρετε.
Το κείμενο κατακερματίζεται ως UTF-8. Τα προγράμματα περιήγησης μετατρέπουν τις αλλαγές γραμμής των Windows (CRLF) σε LF στο επικολλημένο κείμενο, και ένα byte που αλλάζει χαλάει τον κατακερματισμό: όταν έχετε αμφιβολία, ανοίξτε το ίδιο το αρχείο.
Το URL απλώς γράφεται στο απόσπασμα και δεν ζητείται ποτέ. Αφήστε το κενό για να χρησιμοποιηθεί το όνομα του αρχείου.
Πώς να δημιουργήσετε έναν κατακερματισμό SRI
- Στην ενότητα Κατακερματισμός, επιλέξτε Επικολλημένος κώδικας ή Αρχεία.
- Επικολλήστε το ακριβές περιεχόμενο του script ή του φύλλου στυλ στο πεδίο Περιεχόμενο script ή φύλλου στυλ και πατήστε Δημιουργία κατακερματισμού SRI, ή σύρετε ένα ή περισσότερα αρχεία
.jsκαι.cssστην περιοχή απόθεσης. Οι κατακερματισμοί ενημερώνονται καθώς πληκτρολογείτε. - Αφήστε επιλεγμένο τον SHA-384 (προτεινόμενος) ή προσθέστε τους SHA-256 και SHA-512. Κάθε επιλεγμένος αλγόριθμος προσθέτει ένα στοιχείο στην τιμή.
- Διαλέξτε την Ετικέτα (αυτόματα από το όνομα του αρχείου,
<script>,<script type="module">ή<link rel="stylesheet">), πληκτρολογήστε το URL πόρου για το απόσπασμα (προαιρετικό) και επιλέξτε τη λειτουργίαcrossorigin. - Αντιγράψτε την τιμή integrity ή ολόκληρη την ετικέτα.
- Για να ελέγξετε μια ετικέτα που ήδη χρησιμοποιείτε, επικολλήστε την τιμή ή ολόκληρη την ετικέτα στο πεδίο Έλεγχος υπάρχουσας τιμής integrity (προαιρετικό).
Τι κάνει το Subresource Integrity
Όταν μια σελίδα φορτώνει ένα script από CDN, το πρόγραμμα περιήγησης εμπιστεύεται ό,τι επιστρέψει ο διακομιστής. Αν το CDN παραβιαστεί ή το αρχείο αλλαχθεί, ο τροποποιημένος κώδικας εκτελείται με πλήρη πρόσβαση στη σελίδα σας. Το Subresource Integrity (W3C SRI) κλείνει αυτό το κενό: δημοσιεύετε τον αναμενόμενο κατακερματισμό του αρχείου στο χαρακτηριστικό integrity, το πρόγραμμα περιήγησης κατακερματίζει ό,τι κατεβάζει και αρνείται να εκτελέσει το script ή να εφαρμόσει το φύλλο στυλ αν οι δύο τιμές διαφέρουν.
<script src="https://cdn.example.com/lib.min.js"
integrity="sha384-H8BRh8j48O9oYatfu5AZzq6A9RINhZO5H16dQZngK7T62em8MUt1FLm52t+eX6xO"
crossorigin="anonymous"></script>
Η τιμή αποτελείται από το όνομα του αλγορίθμου, μια παύλα και την περίληψη των byte του αρχείου σε κωδικοποίηση Base64. Το παραπάνω παράδειγμα είναι ο κατακερματισμός του alert('Hello, world.'); από την προδιαγραφή SRI. Όταν αναφέρονται πολλοί κατακερματισμοί, τα προγράμματα περιήγησης εξετάζουν μόνο τον ισχυρότερο αλγόριθμο που υπάρχει και δέχονται το αρχείο αν ταιριάζει οποιοσδήποτε κατακερματισμός αυτού του αλγορίθμου. Έτσι ένας ιστότοπος μπορεί να δηλώσει δύο εκδόσεις ενός αρχείου κατά τη διάρκεια μιας σταδιακής αλλαγής.
Γιατί απαιτείται το crossorigin
Για ένα αρχείο από άλλη προέλευση, το πρόγραμμα περιήγησης μπορεί να ελέγξει την ακεραιότητά του μόνο αν η απόκριση ληφθεί σε λειτουργία CORS. Γι’ αυτό η ετικέτα χρειάζεται το χαρακτηριστικό crossorigin και ο διακομιστής πρέπει να απαντά με κεφαλίδα Access-Control-Allow-Origin. Χρησιμοποιήστε anonymous (χωρίς cookies) για δημόσια CDN· το use-credentials προορίζεται για σπάνιους ιδιωτικούς πόρους. Χωρίς CORS, το πρόγραμμα περιήγησης μπλοκάρει το αρχείο αντί να το φορτώσει χωρίς έλεγχο.
Γιατί το εργαλείο δεν κατεβάζει διευθύνσεις URL
Το εργαλείο κατακερματίζει μόνο κώδικα που επικολλάτε ή αρχεία που ανοίγετε. Η λήψη ενός script από το URL του μέσα στη σελίδα θα δούλευε μόνο όταν ο διακομιστής επιτρέπει αναγνώσεις από άλλη προέλευση, και η παράκαμψη αυτού του περιορισμού θα απαιτούσε έναν διακομιστή που να φέρνει το αρχείο για εσάς, ο οποίος θα έβλεπε και ό,τι κατακερματίζετε. Εδώ όλα τρέχουν στο πρόγραμμα περιήγησής σας. Η πιο απλή μέθοδος είναι να κατεβάσετε το ακριβές αρχείο στο οποίο θα παραπέμπετε (την ίδια έκδοση και την ίδια ελαχιστοποιημένη μορφή) και να το ανοίξετε εδώ.
Συχνές ερωτήσεις
Ποιον αλγόριθμο να χρησιμοποιήσω;
Ο SHA-384 είναι η συνηθισμένη επιλογή και αυτός που δημοσιεύουν τα περισσότερα CDN. Οι SHA-256 και SHA-512 υποστηρίζονται επίσης από όλα τα σύγχρονα προγράμματα περιήγησης. Οι MD5 και SHA-1 δεν επιτρέπονται στο SRI.
Ο κατακερματισμός μου είναι σωστός, αλλά το πρόγραμμα περιήγησης μπλοκάρει το αρχείο. Γιατί;
Ελέγξτε ότι ο διακομιστής στέλνει Access-Control-Allow-Origin και ότι η ετικέτα έχει crossorigin. Βεβαιωθείτε επίσης ότι το CDN σερβίρει τα ίδια byte: μια διαφορετική έκδοση, ένας αυτόματος ελαχιστοποιητής ή μια τελική αλλαγή γραμμής που λείπει αλλάζουν όλα τον κατακερματισμό.
Γιατί ο επικολλημένος κώδικας δίνει διαφορετικό κατακερματισμό από το αρχείο;
Τα προγράμματα περιήγησης μετατρέπουν τις αλλαγές γραμμής των Windows (CRLF) σε LF στα πεδία κειμένου, και ένας επεξεργαστής μπορεί να προσθέσει ή να αφαιρέσει ένα byte order mark ή μια τελική αλλαγή γραμμής. Ανοίξτε το ίδιο το αρχείο για να κατακερματιστούν τα ακριβή byte του.
Χρειάζομαι SRI για αρχεία στο δικό μου domain;
Προστατεύει από αλλαγές που γίνονται μετά τον υπολογισμό του κατακερματισμού, γι’ αυτό μετράει περισσότερο για διακομιστές τρίτων. Για τα δικά σας αρχεία, συνήθως είναι ευκολότερο ένα εργαλείο δόμησης που δημιουργεί τους κατακερματισμούς κατά την παραγωγή.
Λειτουργεί το SRI για εικόνες ή γραμματοσειρές;
Το χαρακτηριστικό integrity υποστηρίζεται στα <script> και <link rel="stylesheet"> (καθώς και στα <link rel="preload"> ή modulepreload για αυτά). Οι εικόνες και οι γραμματοσειρές δεν μπορούν να το χρησιμοποιήσουν.
Σχετικά εργαλεία
- Δημιουργός hash Δημιουργήστε hash MD5, SHA-1, SHA-256 και SHA-512 για κείμενο ή αρχεία οποιουδήποτε μεγέθους και επαληθεύστε αθροίσματα ελέγχου στο πρόγραμμα περιήγησής σας.
- Κωδικοποίηση και αποκωδικοποίηση Base64 Δωρεάν κωδικοποίηση και αποκωδικοποίηση Base64 με πλήρη υποστήριξη UTF-8 και επιλογή base64url. Λειτουργεί στο πρόγραμμα περιήγησής σας.
- Προβολή αρχείων HAR Ανοίξτε ένα αρχείο .har στο πρόγραμμα περιήγησής σας για να δείτε αιτήματα, κεφαλίδες, cookies, χρόνους και καταρράκτη και εξυγιάνετέ το πριν το μοιραστείτε.