Χαρακτηριστικά περιεχομένου, ασφάλειας και σχεδιασμού για IFRAME
Το στοιχείο σάς επιτρέπει να ενσωματώσετε άλλες ιστοσελίδες απευθείας στην ιστοσελίδα σας. Αλλά όταν χρησιμοποιείτε iframes υπάρχουν ορισμένα ζητήματα ασφάλειας και σχεδίασης που δεν αντιμετωπίστηκαν στο HTML 4.01. Το HTML5 φέρνει σε αυτό το στοιχείο τρία νέα χαρακτηριστικά για να αντιμετωπίσει αυτές τις ανησυχίες:
Το χαρακτηριστικό του sandbox
Το χαρακτηριστικό sandbox του στοιχείου IFRAME είναι ένα πολύ χρήσιμο χαρακτηριστικό ασφαλείας των iframes. Όταν το τοποθετείτε σε ένα στοιχείο IFRAME, καθοδηγείτε τον πράκτορα χρήστη να αποκλείσει λειτουργίες που ενδέχεται να προκαλέσουν κίνδυνο ασφαλείας για τον ιστότοπο και τους χρήστες του.
Για παράδειγμα:
Ενημερώνει το πρόγραμμα περιήγησης να αποκλείει όλες τις λειτουργίες που ενδέχεται να αποτελούν κίνδυνο ασφαλείας. Συγκεκριμένα, τα πρόσθετα δεν επιτρέπονται. Τα έντυπα δεν μπορούν να υποβληθούν. Τα Sscripts δεν θα εκτελούνται και δεν επιτρέπονται συνδέσεις εκτός του IFRAME. Τέλος, δεν επιτρέπεται η πρόσβαση σε cookies, τοπικό αποθηκευτικό χώρο και άλλες σελίδες στον ίδιο τομέα (προέλευση).
Στη συνέχεια, χρησιμοποιώντας τις τιμές λέξης-κλειδιού sandbox, μπορείτε να ενεργοποιήσετε ξανά ορισμένες από τις λειτουργίες. Αυτές οι λέξεις-κλειδιά είναι:
- επιτρεπόμενα έντυπα - υποβολή μέσω φόρμας
- επιτρέψτε σε δέσμες ενεργειών ίδιας προέλευσης για πρόσβαση στο περιεχόμενο, όπως τα cookies από τον ίδιο τομέα προέλευσης
- allow-scripts -αποκλειστικά scripts για εκτέλεση σε αυτό το IFRAME
- επιτρεπτή-επάνω-ναυσιπλοΐας -απαγάγετε τους συνδέσμους IFRAME και τα σενάρια στον στόχο _top
Δεν είναι καλή ιδέα να ορίσετε ταυτόχρονα τις επιτρεπόμενες-δέσμες ενεργειών και τις λέξεις-κλειδιά με την ίδια προέλευση μαζί με το ίδιο IFRAME. Αν το κάνετε αυτό, τότε η ενσωματωμένη σελίδα μπορεί να καταργήσει εντελώς το χαρακτηριστικό του sandbox, αποκλείοντας οποιαδήποτε πλεονεκτήματα ασφαλείας.
Το χαρακτηριστικό srcdoc
Το χαρακτηριστικό srcdoc είναι ένα χαρακτηριστικό που δίνει στον σχεδιαστή Web μεγαλύτερο έλεγχο των iframes καθώς και περισσότερη ασφάλεια. Αντί να συνδεθεί με μια ιστοσελίδα σε διαφορετική διεύθυνση URL, ο σχεδιαστής του ιστού τοποθετεί το HTML που πρόκειται να εμφανιστεί σε ένα IFRAME μέσα στο χαρακτηριστικό srcdoc.
Αρχικά, ίσως να σκεφτόμαστε: "Πώς είναι αυτό διαφορετικό από το να βάλεις την HTML δεξιά στη σελίδα;" Και με κάποιους τρόπους, δεν είναι τρομερά διαφορετικό.
Αλλά πρέπει να έχετε κατά νου μια από τις λειτουργίες του στοιχείου IFRAME, το οποίο είναι να διατηρείτε τα δεδομένα που δεν έχουν εμπιστευτεί ξεχωριστά από το υπόλοιπο τμήμα του ιστότοπου.
Τοποθετώντας HTML που δημιουργείται από μια μη αξιόπιστη πηγή, όπως μια φόρμα, σε ένα IFRAME, μπορείτε να "sandbox" το μη αξιόπιστο περιεχόμενο και να το εμφανίσετε στη σελίδα. Τα σχόλια του Blog είναι ένα παράδειγμα. Τα περισσότερα blog έχουν μόνο περιορισμένο αριθμό ετικετών HTML που μπορούν να χρησιμοποιήσουν οι σχολιαστές στα σχόλιά τους. Αλλά με την τοποθέτηση αυτών των σχολίων σε ένα IFRAME με sandboxed χρησιμοποιώντας το χαρακτηριστικό srcdoc, τα σχόλια μπορούν να είναι πιο ισχυρά ενώ ταυτόχρονα προστατεύουν το site ως σύνολο.
Ασφάλεια και Iframes
Τα παραπάνω δύο χαρακτηριστικά παρέχουν ασφάλεια για τα στοιχεία IFRAME, αλλά δεν αποτελούν απόδειξη για όλους τους κακόβουλους ιστότοπους. Εάν ο κακόβουλος ιστότοπος μπορεί να πείσει έναν χρήστη να έχει άμεση πρόσβαση στο εχθρικό περιεχόμενο (όπως πληκτρολογώντας τη διεύθυνση URL στο πρόγραμμα περιήγησης), μπορούν ακόμα να επιτεθούν.
Εάν είναι δυνατό, είναι προτιμότερο να ορίσετε το περιεχόμενο που βρίσκεται στο IFRAME ως "sandboxed" ως τον τύπο MIME κειμένου / html-sandboxed.
Το απρόσκοπτο χαρακτηριστικό
Το χαρακτηριστικό απρόσκοπτη είναι ένα χαρακτηριστικό boolean που λέει στο πρόγραμμα περιήγησης να εμφανίζει το IFRAME σαν να ήταν μέρος του γονικού εγγράφου. Αν θέλετε το IFRAME να εμφανίζεται απλά, απλά συμπεριλάβετε αυτό το χαρακτηριστικό στο στοιχείο:
Αλλά κάνοντας το IFRAME απρόσκοπτο είναι κάτι περισσότερο από το βλέμμα, είναι επίσης ο τρόπος με τον οποίο η σελίδα αλληλεπιδρά με το πλαίσιο. Για παράδειγμα:
- Οι συνδέσεις στο IFRAME θα ανοίξουν στο γονικό παράθυρο , εκτός αν η σελίδα IFRAME έχει το target _SELF.
- Το CSS στην IFRAME θα προστεθεί στον καταρράκτη ολόκληρου του εγγράφου.
- Το στοιχείο ρίζας της σελίδας IFRAME θεωρείται παιδί του IFRAME.
- Το πλάτος και το ύψος του IFRAME ορίζονται με τρόπο παρόμοιο με τον τρόπο με τον οποίο θα οριστούν άλλα στοιχεία σε επίπεδο μπλοκ .
- Όταν το γονικό έγγραφο προβάλλεται από ένα εργαλείο απόδοσης ομιλίας, όπως ένα πρόγραμμα ανάγνωσης οθόνης, το IFRAME διαβάζεται χωρίς να το αναγγέλλει ως ξεχωριστό έγγραφο.
- Οποιαδήποτε δέσμη ενεργειών στο γονικό έγγραφο θα επηρεάσει το έγγραφο IFRAME με τον ίδιο τρόπο. Για παράδειγμα, αν ένα σενάριο αναφέρει όλα τα πλαίσια στη σελίδα, θα αναφέρονται και οι σύνδεσμοι στο IFRAME.
Με άλλα λόγια, το απρόσκοπτο χαρακτηριστικό κάνει πολύ περισσότερα από την απλή αφαίρεση των συνόρων από το IFRAME. Εάν πρόκειται να ορίσετε μια IFRAME να είναι απρόσκοπτη, θα πρέπει να είστε πολύ σίγουροι για το περιεχόμενο, ώστε να μην προσθέσετε κανένα κίνδυνο ασφαλείας στον ιστότοπό σας, ενσωματώνοντας έναν κακόβουλο ιστότοπο.