2012-03-24 4 views
0

Je sais que pour empêcher XSS, nous devons être sensibles au contexte.Prévenir XSS dans le bon sens

lorsque nous faisons écho $ userinput; nous devons être conscients du fait que si cette entrée entre dans une valeur de zone de texte, ou dans une valeur de zone de texte ou dans une zone de division html et ainsi de suite. Je voudrais simplifier le business d'écho afin que je puisse utiliser une seule fonction pour la plupart de mes besoins d'écho. Dans cet esprit, j'ai mis en place la fonction suivante, mais je ne suis pas sûr, si c'est une bonne idée de s'appuyer sur elle.

Bien sûr, j'ai fait quelques suppositions. C'est pourquoi j'utilise toujours l'urlencode intégré pour les URL. Et je Délimiter religieusement attributs avec soit "ou ».

Avec cela à l'esprit, puis-je utiliser ci-dessous safeecho par opposition à l'écho simple pour éviter XSS?

function safeecho($str) 
{ 

    return htmlentities($str, ENT_QUOTES, "UTF-8"); 

} 

Une chose que je ne suis pas sûr est le contexte <Style> J'ai vu des gens parler du problème des "expressions" avec les feuilles de style Je ne suis pas sûr de la façon dont cela est traité, mais puisque je ne prévois pas de sortir userinput au milieu d'une feuille de style, ou javascript Je ne suis pas inquiet pour ces choses! Quand je me retrouve à devoir sortir userinput dans la zone js ou dans la feuille de style, je n'utiliserai pas cette fonction, mais je suis toujours intéressé par vos commentaires sur la façon de traiter ces contextes aussi. encore une fois, je suis principalement inquiet de la substance commune qui est html et forme des objets. La question finale est de forcer l'utf8 et les ent_quotes, suis-je sûr?

+0

Ne devriez-vous pas ajouter de tag Javascript ici? – tchrist

+0

@tchrist Je ne suis pas sûr de ce que tu veux dire par "ici"? –

Répondre

0

Est-ce que les sources d'information s'échappent? Si c'est le cas, il devrait être la plupart du temps ok. Il y a toujours le problème de javascript: les URL que vous devez gérer. Et n'oubliez pas que les attributs html comme onclick sont en fait javascript, donc votre fonction n'aura aucun effet ici. Vous devrez faire js s'échapper. Voir la fiche de prévention Osssp xss. En ce qui concerne CSS, évitez d'y mettre des données utilisateur si vous le pouvez. Il nécessite une approche de validation de valeur clé basée sur la liste blanche.

Questions connexes