Protection contre injection HTML

Protection contre injection HTML - HTML/CSS - Programmation

Marsh Posté le 13-12-2009 à 21:06:11    

Salut tout le monde,
 
je fais une application J2EE qui contiendra pour chaque personne inscrite un blog.  
Par nature, le blog permet à la personne qui l'utilise d'y écrire ce qu'elle veut. Je pose donc une question assez générale :
comment protéger l'application de blog contre l'injection de code HTML malicieux ?
 
Exemple: supposons que je sois naïf et que je décide simplement d'inclure le contenu de l'utilisateur comme ceci:
 
<p>
{contenu}
</p>
 
Il suffit donc à l'utilisateur de mettre ce contenu: "</p> Je fais ce que je veux avec ton site <!--"
 
et mon bout de site devient alors
 
<p>
</p> Je fais ce que je veux avec ton site <!--
</p>

 
l'utilisateur peut donc remplacer le contenu de mon site par n'importe quoi.
 
Pour régler la faille décrite précédemment, je propose de remplacer dans le {contenu} tous les '<' par des '&lt;' et tous les '>' par des '&gt;'
 
Mais est-ce suffisant? connaissez vous d'autres failles dues à l'injection de code HTML non désiré et connaissez vous des solutions possibles?

Reply

Marsh Posté le 13-12-2009 à 21:06:11   

Reply

Marsh Posté le 13-12-2009 à 23:35:06    

en PHP, t'as les fonctions htmlentities et htmlspecialchars pour éviter ce genre de souci à l'affichage.
 
Mais si tu parles de J2EE, c'est que tu dois faire référence au Java (et non javascript) ... donc mauvaise cat'.


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 14-12-2009 à 16:29:48    

Au depart, j'ai pense a le mettre dans la categorie Java, mais ce n'est pas un probleme lie a Java en particulier, c'est un probleme qui concerne la generation de code HTML a partir de n'importe quel langage cote serveur
 
Ici, le probleme fondamental, c'est HTML et j'aimerais trouver une solution qui soit valable quelque soit le langage de script cote serveur
 
Pour info, j'ai analyse le code source de mon message precedent (click droit -> view source) avec firefox et on dirait bien que le site hardware.fr resout le probleme comme je le suggerais : remplacer tous les '<' par des '&lt;' et tous les '>' par des '&gt;'  de maniere a ne pas interpreter les balises entrees par l'utilisateur.
 
Je voudrais juste savoir s'il y a que le probleme des balises contre lequel il faut se proteger ou s'il y a autre chose.
 
Ce probleme peut paraitre benin mais un journal en ligne a pris une forte amende apres qu'un hacker ait reussi a inserer un article faux par un procede similaire a celui-ci.  
 
Le hacker a juste profite d'une faille de ce type pour remplacer un article de journal par un article de son cru. Une personne a ensuite porte plainte parce que le journal diffusait des informations fausses...

Reply

Marsh Posté le 14-12-2009 à 16:41:11    

Il faut aussi remplacer le caractère & par &amp;. Et si jamais tu injectes tu code dans un attribut (genre <input type="text" value="%{blabla}%"> ) faudra aussi remplacer ' par &#39; et/ou " par &#34;


Message édité par tpierron le 14-12-2009 à 16:43:28
Reply

Marsh Posté le 14-12-2009 à 16:56:02    

liouan a écrit :

Ici, le probleme fondamental, c'est HTML et j'aimerais trouver une solution qui soit valable quelque soit le langage de script cote serveur


Pas possible, ça.
La seule solution efficace c'est de virer tout tag html dans le texte saisi par l'utilisateur (en l'échappant), ce que tu peux faire soit au moment de sa saisie (déconseillé, mieux vaut conserver le message original dans tous les cas), soit à l'affichage.


Message édité par skeye le 14-12-2009 à 16:56:48

---------------
Can't buy what I want because it's free -
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed