Faille ajax possible?

noren

WRInaute accro
Bonsoir

Etant novice en ajax, je crains de laisser passer des failles.

J'ai cru comprendre qu'un utilisateur peut modifier le javascript directement via son navigateur (avec un plugin), peut-il injecter du code ici, par exemple :

Code:
$("#form").one("submit",function(event) {
      event.preventDefault();
       $.ajax({
         url: $("input[name=urlsubmit]").val(),
         type: "post",
         data: $("#form").serialize(),
         dataType : "json",
         success: function(d) {
            $("#submit-ad-rep").attr("disabled", true);
            $(".errors").fadeOut();
            $(".validates").fadeOut(); 
            if(d["error"]!=null) $(".errors").empty().append(d["error"]).hide().fadeIn(800);
            if(d["valide"]!=null) $(".validates").empty().append(d["valide"]).hide().fadeIn(800);
         }
      });
  });

Je m'explique, dans d["error"] ou d["valide"] je récupère les messages retour de ma page qui traite le formulaire.
ma page de traitement envoi ces réponses de cette façon :

Exemple :

Code:
$msg['error'] = "blablabla";
exit(json_encode($msg));

ici je retourne dans d["error"] je récupère donc "blablabla"
Jusque là rien d'anormal

Mais maintenant qu'est-ce qui empêche un utilisateur mal intentionné de modifier la ligne suivante via son navigateur:

Code:
if(d["error"]!=null) $(".errors").empty().append(d["error"]).hide().fadeIn(800);

par ceci :

Code:
if(d["error"]!=null) $(".errors").empty().append("<script>alert('')</script>").hide().fadeIn(800);

C’est évidemment un exemple, on pourrait imaginer qu'il injecte un script plus complexe

Résultat ça ajoute bien ceci dans la page HTML

<p class="validates"><script>alert('')</script></p>

Je ne peux évidemment pas faire de htmlspecialchars sur ces données retournées en ajax et qui pourraient être modifiées par un utilisateur, étant donné que dans ma vue j'ai uniquement ceci :

Code:
<p class="validates"></p>

Est-ce vraiment une faille ? Cet utilisateur peut il effectuer une injection dangereuse ? Si oui comment l'éviter ?
Ou suis-je juste parano? :mrgreen:

PS : j'ai vu sur wikipedia quelque chose faisant référence aux failles XSS "Basé sur le DOM ou local"
http://fr.wikipedia.org/wiki/Cross-site_scripting
 

loubet

WRInaute impliqué
l’intérêt d'une injection, c'est si tu peux faire arriver d'autres personnes sur une page qui va afficher le contenu normal de la page + le contenu que tu ajoutes.
n'importe quel internaute peut modifier, avec un plugin comme firebug, le contenu d'un p dans une page affichée dans son navigateur pour y mettre du javacript; et c'est en rien ton problème.
 

Discussions similaires

Haut