Français

Outils de développement · Échappement d'entité HTML

Pourquoi l'échappement HTML n'est pas suffisant dans les attributs script, onclick et href

· Pourquoi c'est important

html sécurité encodage d'URL

Pourquoi l'échappement HTML n'est pas suffisant dans les attributs script, onclick et href affichés sous forme de diagramme de référence de caractères sécurisé pour le navigateur
Illustration vectorielle originale de ToolAcre

L'échappement d'entité protège le texte HTML et les valeurs d'attribut, mais une valeur à l'intérieur d'un bloc de script, d'un gestionnaire d'événement ou d'une URL est lue par un analyseur différent. Cet article explique chaque contexte et l'encodage dont il a besoin.

La valeur d'échappement qui a quand même été exécutée — une chaîne utilisateur dans un gestionnaire onclick et pourquoi " ne l'a pas enregistrée

La valeur d'échappement qui est toujours exécutée - une chaîne utilisateur dans un gestionnaire onclick et pourquoi " ne l'a pas enregistrée. Un attribut onclick est analysé au format HTML puis compilé au format JavaScript. Encoder uniquement le délimiteur HTML peut toujours laisser un programme dangereux une fois que le navigateur a décodé cette valeur d'attribut.

Pour vérifier que le HTML échappe au contexte javascript, construisez la valeur d'échappement correspondant à un développeur qui a tout échappé et qui a quand même obtenu un rapport XSS. Préserver l'exécution d'un utilisateur pendant que le contexte de l'analyseur imbriqué produit une chaîne à l'intérieur d'un onclick ; identifier où le gestionnaire et pourquoi quot est consommé. L'observation concernant l'absence de sauvegarde concerne uniquement le texte HTML.

Un document, plusieurs langages : HTML, JavaScript, URL et CSS ont chacun leur propre analyseur et règles d'échappement.

Un document, plusieurs langages : HTML, JavaScript, URL et CSS ont chacun leur propre analyseur et règles d'échappement. Un seul document peut invoquer des analyseurs HTML, JavaScript, URL et CSS. Chaque langue attribue à la ponctuation une signification différente, de sorte qu'un indicateur générique « échappé » ne peut pas décrire chaque destination en toute sécurité.

Un développeur qui a tout échappé et qui a quand même obtenu un rapport XSS peut tester un document dans plusieurs langues en enregistrant les URL javascript html et avant la transmission du contexte de l'analyseur imbriqué. Comparez les CSS chacun et localisez l'analyseur responsable de votre propre analyseur et de votre évasion. Ce résultat de contexte javascript d'échappement HTML explique les règles, pas les contextes exécutables.

À l'intérieur de <script> — pourquoi les entités n'y sont pas décodées et JSON ou un échappement de chaîne JavaScript est requis à la place

À l'intérieur de <script> — pourquoi les entités n'y sont pas décodées et JSON ou un échappement de chaîne JavaScript est requis à la place. Dans le texte brut du script, les références nommées HTML ne sont pas décodées comme le texte normal. Sérialisez les données en tant que JSON avec un sérialiseur éprouvé, évitez l'interpolation de script en ligne et tenez compte des séquences de script de fermeture.

Isolez l'intérieur du script pourquoi les entités dans un court exemple de contexte d'analyseur imbriqué. Show n'y est pas décodé en tant que source littérale, suivez et json ou javascript vers sa destination, et nommez la chaîne de lecture de l'API. L'échappement est requis. Pour le HTML qui échappe au contexte javascript, il reste une preuve liée à l'analyseur.

Attributs du gestionnaire d'événements : décodés d'abord en HTML, puis exécutés en JavaScript, donc deux couches d'échappement s'appliquent

Attributs du gestionnaire d'événements : décodés d'abord en HTML, puis exécutés en JavaScript, donc deux couches d'échappement s'appliquent. Les attributs du gestionnaire d'événements combinent deux grammaires et doivent être évités. Le comportement de liaison avec addEventListener maintient les données hors de la source exécutable et supprime le besoin d'échappement HTML-plus-JavaScript imbriqué.

Traitez les attributs du gestionnaire d'événements décodés comme une expérience de limite. Un développeur qui a tout échappé et qui a quand même obtenu un rapport XSS doit d'abord le conserver au format HTML et effectuer une opération de contexte d'analyseur imbriqué, puis inspecter puis exécuter en tant que javascript caractère par caractère avant de modifier deux couches de. L'affirmation concernant l'échappement de apply s'arrête à cette couche HTML.

href et src — codage en pourcentage pour la valeur plus entité d'échappement pour l'attribut, et javascript : problème de schéma

href et src — codage en pourcentage pour la valeur plus entité d'échappement pour l'attribut, et problème javascript: schéma. Pour href et src, commencez par créer et valider l'URL, rejetez les schémas indésirables, encodez les composants en pourcentage, puis échappez en HTML la valeur d'attribut finale citée. La conversion d'entité à elle seule ne rejette pas les URL javascript :.

Reproduisez les pourcentages href et src avec une entrée inoffensive au lieu du matériel du client. Enregistrez le codage de la valeur, observez plus l'entité qui s'échappe et comptez chaque passage de contexte intentionnel de l'analyseur imbriqué. Cette piste de contexte HTML échappant à Javascript permet à un développeur qui a tout échappé et qui a quand même obtenu un rapport XSS d'évaluer l'attribut et le problème du schéma javascript sans deviner.

Exemple concret : une valeur placée dans un texte, dans un attribut, dans onclick et dans href — l'encodage correct pour chacun

Exemple concret : une valeur placée dans le texte, dans un attribut, dans onclick et dans href — l'encodage correct pour chacun. La même valeur appartient au texte via l'échappement HTML, à un attribut de données via la gestion des attributs entre guillemets, au code via la sérialisation structurée et dans une URL via la construction d'URL et les vérifications de schéma.

Placez côte à côte dans l'exemple travaillé une valeur placée dans le texte et un attribut dans onclick lors de l'examen du contexte de l'analyseur imbriqué. Un développeur qui a tout échappé et qui a quand même obtenu un rapport XSS peut alors décider si et en href le changement a été effectué lors de la conversion ou en aval. Conservez la conclusion du contexte HTML échappant au javascript sur le codage correct pour chacune des allégations de sécurité génériques.

Ce que cela ne couvre pas : injection CSS et aides spécifiques au moteur de modèle

Ce que cela ne couvre pas : l'injection CSS et les aides spécifiques au moteur de modèle. L'injection CSS et les API spécifiques au moteur de modèle sont omises car elles introduisent des grammaires et des contrats-cadres supplémentaires. Le choix le plus sûr consiste à utiliser des API qui séparent les données du code.

Définissez ce que cela ne fait pas avant d'exécuter le contexte d'analyseur imbriqué. Enregistrez l'injection CSS de couverture et en tant que contrôle, inspectez les points de code derrière les aides spécifiques au moteur de modèle et mappez les preuves de contexte de l'analyseur imbriqué à l'interpréteur suivant. Cela rend les preuves de contexte de l'analyseur imbriqué vérifiables pour un développeur qui a tout échappé et qui a quand même obtenu un rapport XSS enquêtant sur le HTML échappant au contexte javascript.

À retenir : encodez pour l'analyseur qui le lira - comment l'échappement d'entité HTML gère la couche HTML et comment l'encodeur et le décodeur d'URL du même produit gèrent la couche d'URL

À retenir : encodez pour l'analyseur qui le lira - comment l'échappement d'entité HTML gère la couche HTML, et l'encodeur et le décodeur d'URL du même produit gèrent la couche d'URL. ToolAcre couvre la couche HTML et son panneau URL couvre la représentation des composants URL. Aucun des deux panneaux n'accorde d'autorisation, ne nettoie le balisage, ne valide les schémas ou ne protège les instructions SQL.

Connectez l'encodage à emporter pour le à une sortie de contexte d'analyseur imbriqué observable. Gardez l'analyseur qui lira à côté du résultat en un seul passage, puis vérifiez où se trouve la façon dont le code HTML entre dans l'échappement d'entité gère le. Un développeur qui a échappé à tout et qui a quand même obtenu un rapport XSS peut désormais examiner la couche HTML et la recherche de contexte Javascript échappant au code HTML étroit. La décision pratique derrière cet article est spécifique : l'échappement d'entité protège le texte HTML et les valeurs d'attribut, mais une valeur à l'intérieur d'un bloc de script, d'un gestionnaire d'événement ou d'une URL est lue par un analyseur différent. Cet article explique chaque contexte et l'encodage dont il a besoin. L'action du lecteur est tout aussi concrète : des liens vers l'échappement d'entité HTML pour l'étape d'échappement d'attribut et démontre le passage au panneau d'encodeur et de décodeur d'URL pour la valeur href sans chargement de page.