web-dev-qa-db-fra.com

Pourquoi les chaînes XSS commencent-elles souvent par ">?

Une des façons, XSS peut être exploitée, est d'utiliser la balise suivante:

"><script>alert(document.cookie)</script>

Ici, quelle est la signification de "> avant le script (<script> tag) et pourquoi est-il utilisé?

38
Tushar

De cette façon, vous échappez d'un attribut entre guillemets doubles (") et fermez la balise précédente (>) avant d'ouvrir une balise de script contenant votre charge utile. C'est l'un des modèles XSS les plus élémentaires.

Exemple:

<input type = "text" value = "$ XSS"> 

Avec votre séquence, cela devient:

<input type = "text" value = ""> <script> alerte (document.cookie) </script>"> 
 ^ - une balise terminée ^ - ordures de charge utile - ^ 

Notez que votre vecteur ne fonctionne que si les entités HTML ne sont pas filtrées.

Donc, si vous ne pouvez pas échapper à cet attribut, il est sûr pour XSS. Cela ne déclenche pas:

<input type = "text" value = "<script> alerte (document.cookie) </script>">

Vous pouvez voir la même idée avec XSS dans Javascript (par exemple '); pour terminer une chaîne et un appel de fonction) ou avec des injections SQL. Les premiers caractères d'une séquence d'injection ont souvent pour but de s'échapper du contexte actuel.

Quant à @ Mindwin's obligatoire injection SQL bande xkcd , j'ai encerclé à main levée la partie à laquelle je fais référence:

enter image description here

75
Arminius