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 :
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 :
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:
par ceci :
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 :
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
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