Η κεφαλίδα απόκρισης HTTP Content-Security-Policy επιτρέπει στον ιστότοπο να ελέγχει ποιους πόρους φορτώνει ο πράκτορας χρήστη για μια δεδομένη σελίδα. Εκτός από ειδικές περιπτώσεις, οι πολιτικές που ορίζονται περιλαμβάνουν κυρίως τον καθορισμό των τελικών σημείων προέλευσης και δέσμης ενεργειών του διακομιστή. Αυτό θα βοηθήσει να σταματήσουν οι επιθέσεις δέσμης ενεργειών μεταξύ τοποθεσιών
Τεκμηρίωση:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Αυτό το άρθρο περιγράφει την Πολιτική Ασφάλειας Περιεχομένου του W3C, ή εν συντομία CSP. Όπως υποδηλώνει το όνομα, αυτή η προδιαγραφή σχετίζεται με την ασφάλεια περιεχομένου και χρησιμοποιείται κυρίως για τον καθορισμό των πόρων που μπορεί να φορτώσει μια σελίδα και τη μείωση της εμφάνισης XSS.
Το πρώιμο Chrome υποστήριζε το CSP μέσω της κεφαλίδας απόκρισης X-WebKit-CSP, ενώ ο firefox και ο IE υποστήριζαν το X-Content-Security-Policy και το Chrome25 και το Firefox23 άρχισαν να υποστηρίζουν την τυπική Content-Security-Policy.
Ενδέχεται να συλλέγονται ευαίσθητες πληροφορίες σχετικά με εφαρμογές web, όπως ονόματα χρήστη, κωδικοί πρόσβασης, ονόματα υπολογιστών ή/και ευαίσθητες τοποθεσίες αρχείων Οι αρχάριοι χρήστες μπορεί να πειστούν να παρέχουν ευαίσθητες πληροφορίες, όπως ονόματα χρήστη, κωδικούς πρόσβασης, αριθμούς πιστωτικών καρτών, αριθμούς κοινωνικής ασφάλισης κ.λπ
Αρχικά, ας δημιουργήσουμε ένα νέο έργο ASP.NET MVC, ας δημιουργήσουμε ένα νέο σενάριο js και ας φορτώσουμε δυναμικά τον κώδικα js των στατιστικών Baidu, ως εξής:
Όπως φαίνεται στο παραπάνω σχήμα, μπορούμε να δούμε τον κώδικα σεναρίου JS που έχει εισαχθεί με επιτυχία σε τρίτο μέρος (Baidu), εάν υπάρχει κάποιος κακόβουλος κώδικας στο JS τρίτου μέρους, όπως κλοπή cookies, τροποποίηση περιεχομένου, μετάβαση συνδέσμων κ.λπ.
Πώς μπορώ να σταματήσω την εισαγωγή μη ασφαλών σεναρίων JS τρίτων;
Λύση
Κεφαλή απόκρισηςΠροσθήκη "Content-Security-Policy"για παράδειγμα:
Οδηγία | Παράδειγμα τιμής εντολής | διευκρινίζω | προεπιλογή-src | «Εαυτός» cnd.a.com | Καθορίστε την προεπιλεγμένη πολιτική φόρτωσης για όλους τους τύπους πόρων (JS, IMAGE, CSS, WEB FONT, AJAX requests, iframes, πολυμέσα κ.λπ.) και χρησιμοποιήστε την προεπιλογή για ορισμένους τύπους πόρων εάν δεν υπάρχει ξεχωριστή καθορισμένη πολιτική. | σενάριο-src | «Εαυτός» js.a.com | Ορίστε μια πολιτική φόρτωσης για JavaScript. | στυλ-src | «Εαυτός» css.a.com | Ορίστε μια πολιτική φόρτωσης για ένα στυλ. | img-src | «Εαυτός» img.a.com | Καθορίστε μια πολιτική φόρτωσης για εικόνες. | σύνδεση-src | «Εαυτός» | Πολιτικές φόρτωσης για αιτήματα από Ajax, WebSockets κ.λπ. Εάν δεν επιτρέπεται, το πρόγραμμα περιήγησης προσομοιώνει μια απόκριση με κατάσταση 400. | γραμματοσειρά-src | font.a.com | Πολιτική φόρτωσης για WebFont. | αντικείμενο-src | «Εαυτός» | <object><embed> <applet> Οι πολιτικές φόρτωσης για προσθήκες όπως το flash εισήχθησαν για ετικέτες όπως το , ή το . | media-src | media.a.com | <audio> <video> Οι στρατηγικές φόρτωσης για πολυμέσα HTML που εισήχθησαν για ετικέτες όπως ή . | πλαίσιο-src | «Εαυτός» | Πολιτική φόρτωσης για πλαίσια. | αμμοδοχείο | Φόρμες επιτρέποντος | Ενεργοποιήστε το περιβάλλον προστατευμένης εκτέλεσης (παρόμοιο με την ιδιότητα φίλτρου ενός iframe) για τον πόρο που ζητήθηκε. | αναφορά-uri | /report-uri | Πείτε στο πρόγραμμα περιήγησης σε ποια διεύθυνση να υποβάλει πληροφορίες καταγραφής, εάν ο ζητούμενος πόρος δεν επιτρέπεται από την πολιτική. Ειδικό: Εάν θέλετε το πρόγραμμα περιήγησης να αναφέρει μόνο αρχεία καταγραφής και να μην αποκλείει τίποτα, μπορείτε να χρησιμοποιήσετε την κεφαλίδα Content-Security-Policy-Report-Only. |
Ας τροποποιήσουμε το αρχείο web.config του έργου για να προσθέσουμε μια προσαρμοσμένη κεφαλίδα απόκρισης ως εξής:
Επαναλάβετε το έργο όπως φαίνεται παρακάτω:
Το πρόγραμμα περιήγησης απέκλεισε με επιτυχία τη φόρτωση σεναρίων js τρίτων:
Αρνήθηκε να φορτώσει το σενάριο 'https://hm.baidu.com/hm.js?6dbaac17dfeb2840b5b09d2dff6d2319' επειδή παραβιάζει την ακόλουθη οδηγία για την Πολιτική Ασφάλειας Περιεχομένου: "script-src 'self' http://localhost:56888/ ". Σημειώστε ότι το 'script-src-elem' δεν ορίστηκε ρητά, επομένως το 'script-src' χρησιμοποιείται ως εναλλακτικό. (Τέλος)
|