Τι είναι οι οντότητες HTML

Η γλώσσα σήμανσης υπερκειμένου, ή HTML, είναι η κύρια γλώσσα για ιστοσελίδες στο Διαδίκτυο. Περιλαμβάνει υποστήριξη για μια σειρά από άλλες γλώσσες που προσθέτουν επιπλέον λειτουργικότητα και στυλ, όπως JavaScript και CSS. Όλες αυτές οι γλώσσες βασίζονται σε κείμενο με ορισμένους σημαντικούς χαρακτήρες που χρησιμοποιούνται για τον διαχωρισμό κυριολεκτικών συμβολοσειρών που πρέπει να εκτυπωθούν στο πρόγραμμα περιήγησης και κώδικα που πρέπει να ερμηνευτεί και να εκτελεστεί.

Ωστόσο, αυτό το σχέδιο έχει ορισμένα προβλήματα, αυτά γίνονται προφανή όταν θέλετε να εκτυπώσετε έναν από τους σημαντικούς χαρακτήρες στο πρόγραμμα περιήγησης. Τα καλύτερα παραδείγματα χαρακτήρων για χρήση είναι τα σύμβολα "λιγότερο από" και "μεγαλύτερο από". Αντίστοιχα αυτά τα σύμβολα χρησιμοποιούνται για το άνοιγμα και το κλείσιμο τμημάτων κώδικα σε HTML. Η σωστή μέθοδος για την ασφαλή εκτύπωση αυτών των χαρακτήρων στην οθόνη είναι η χρήση οντοτήτων HTML.

Οντότητες HTML και ασφάλεια

Χάρη σε αυτούς τους χαρακτήρες που έχουν ιδιαίτερο νόημα, πρέπει να είστε πολύ προσεκτικοί για να βεβαιωθείτε ότι τους αντικαθιστάτε με την έκδοση οντότητας HTML, εάν θέλετε να εκτυπωθούν στο πρόγραμμα περιήγησης. Δυστυχώς, πολλοί προγραμματιστές ιστού ξεχνούν ότι οι χρήστες μπορούν να υποβάλουν στοιχεία σε πολλούς ιστότοπους. Εάν αυτή η εισαγωγή χρήστη περιλαμβάνει σημαντικούς χαρακτήρες και δεν αντικατασταθούν με οντότητες HTML, σε μια διαδικασία που ονομάζεται απολύμανση, τότε ο ιστότοπος έχει ευπάθεια Cross-Site Scripting (XSS).

Συμβουλή: Μην προσπαθήσετε να υποβάλετε ειδικούς χαρακτήρες σε ιστότοπους σε μια προσπάθεια να βρείτε ευπάθειες XSS. Κάτι τέτοιο είναι τεχνικά hacking και είναι ποινικό αδίκημα, εκτός εάν έχετε άδεια από τον ιδιοκτήτη του ιστότοπου.

Πώς λειτουργούν οι οντότητες HTML (και μερικές φορές όχι)

Οι οντότητες HTML λειτουργούν επειδή το πρόγραμμα περιήγησης ξέρει να το εμφανίζει ως τον σχετικό ειδικό χαρακτήρα και να μην το αντιμετωπίζει ως ειδικό χαρακτήρα. Όλες οι οντότητες HTML ξεκινούν με ένα συμπλεκτικό σύμβολο "&" και τελειώνουν με ένα ερωτηματικό ";". Οι περισσότεροι χαρακτήρες προσδιορίζονται από έναν αριθμό οντότητας, αν και ορισμένοι ειδικοί χαρακτήρες έχουν και σύντομο όνομα. Για παράδειγμα, τα "&", "" έχουν τους αριθμούς οντοτήτων "&", "", καθώς και τα ονόματα οντοτήτων "&", "" αντίστοιχα. Το πρόγραμμα περιήγησης γνωρίζει ότι αυτές οι συμβολοσειρές σημαίνουν ότι πρέπει να εμφανίζει τους σχετικούς χαρακτήρες.

Συμβουλή: Μπορείτε να βρείτε μια πλήρη λίστα ονομάτων οντοτήτων χαρακτήρων εδώ, αν και η υποστήριξη ονόματος οντότητας διαφέρει ανάλογα με το πρόγραμμα περιήγησης.

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