IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Sécurité du formulaire


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 82
    Par défaut [AJAX] Sécurité du formulaire
    Bonjour,

    Pour commencer, je ne sais pas si je poste au bon endroit .

    Je code un formulaire de type newsletter très simple, dans lequel je veux incorporer AJAX. Le problème n'est pas sur AJAX lui même, mais comme dans mon formulaire on trouve trois langages ( HTML, PHP, Javascript ), je savais pas trop où poster...

    Passons au vif du sujet.

    Comme le titre l'indique, je me pose des questions sur la sécurité des formulaires.

    Pour soumettre mon formulaire, voilà comment je procède.

    Code html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form id="formForm" method="post" enctype="multipart/form-data" action="traitement.php" >
    Code Javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    window.onload = function() {
    // du code avant
    	var form = document.getElementById('formForm');
    		form.onsubmit = function() { return CheckGlobal(form); };
    // du code après
    }
    Comme vous vous en doutez, CheckGlobal utilise AJAX pour contrôler avec retour d'information tout les champs du formulaire.

    Mais si l'utilisateur n'utilise pas javascript ( volontairement entre autre ), ma fonction de contrôle ne sera pas exécutée. Comment palier à ca?

    J'ai pensé à une façon de faire, contrôler de nouveau la validité des champs sur la page cible de mon formulaire, mais cette méthode me paraît lourde, autant en terme de programmation qu'en temps d'exécution.

    Voila pourquoi je m'en réfère à vos conseils.

    J'ai aussi une question auxiliaire, lorsque je mets un input :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="text" id="formTitre" size="30" />
    $_POST['formTitre'], ne semble pas fonctionner, suis-je obligé de passer par l'attribut "name"?

    PS : Si vous voyez d'autres conseils important à donner à un débutant sur AJAX, les formulaires et la sécurité, je suis preneur!

    Merci par avance

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Mais si l'utilisateur n'utilise pas javascript ( volontairement entre autre ), ma fonction de contrôle ne sera pas exécutée. Comment palier à ca?
    Ben c'est simple, tu peux pas
    J'ai pensé à une façon de faire, contrôler de nouveau la validité des champs sur la page cible de mon formulaire, mais cette méthode me paraît lourde, autant en terme de programmation qu'en temps d'exécution.
    Attention !!!
    Le contrôle en JavaScript ne doit JAMAIS se substituer au contrôle coté serveur !
    En JavaScript, il sert juste à ajouter un confort supplémentaire pour prévenir l'utilisateur que le formulaire est mal rempli et lui éviter ainsi de recharger la page pour s'entendre dire que c'est pas bon.
    Mais en aucun cas tu ne peux considérer que cela sécurise quoi que ce soit !
    Il n'y a rien de plus facile que de t'envoyer le formulaire avec des tentatives d'injections même si aucun champ n'est rempli et JavaScript activé !
    Les vérifications coté serveur sont incontournable !

    Never trust user input
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 82
    Par défaut
    Ok, merci, je m'en doutais, mais je me demandais quelle était la méthode utilisée en général, la plus 'propre' et la plus 'fiable'.

    Pour l'instant, j'utilise AJAX, qui fait appel au script PHP, pour informer l'utilisateur en 'temps réel', et derrière, lors de la soumission du formulaire, je revérifie les données dans un script PHP.

    Cette méthode me paraissait lourde ( double vérification ), mais d'après ce que tu dis, c'est la ( une ) bonne méthode?

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par klakman Voir le message
    Cette méthode me paraissait lourde ( double vérification ), mais d'après ce que tu dis, c'est la ( une ) bonne méthode?
    C'est LA seule méthode

    Et il ne faut en aucun cas considérer que c'est une double vérification.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 82
    Par défaut
    Bun merci pour l'information!

    Sinon je me permets de reposer ma question auxiliaire :

    J'ai aussi une question auxiliaire, lorsque je mets un input :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" id="formTitre" size="30" />
    $_POST['formTitre'], ne semble pas fonctionner, suis-je obligé de passer par l'attribut "name"?
    Je pense que je peux trouver la réponse sur internet, mais en attendant je profite du temps que je suis ici.


    EDIT :

    Bon, d'après mes recherches, dans les formulaires on met les deux attributs ( id + name ) à la même valeur.

    Voila merci pour votre ( ton ) aide!

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Les valeurs des formulaires sont envoyées si leur attribut name est renseigné sous la forme "name=value".

    L'id ne sert donc à rien pour l'envoi des données du formulaire.
    En revanche, mettre le même name et id est assez fréquent mais n'est pas selon moi une bonne pratique, le name et l'id ne servant pas à la même chose, les appeler de la même manière n'est pas (toujours selon moi) conceptuellement approprié, de plus, contrairement au name, l'id doit être unique dans la page, enfin, la gestion particulière de l'attribut name par IE devrait susciter la plus grande prudence quant au nommage.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Poster un formulaire avec AJAX
    Par faico dans le forum AJAX
    Réponses: 10
    Dernier message: 22/03/2010, 17h12
  2. [ajax] XMLHttpRequest et formulaire(<input type='file'>)
    Par Are-no dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/08/2006, 20h22
  3. [SQL] Synthèse sur la sécurité des formulaires
    Par EvilAngel dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 14/08/2006, 19h38
  4. [AJAX] Sécurité avec AJAX
    Par Oluha dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/07/2006, 18h01
  5. [AJAX] submit file Formulaire
    Par Azanael dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 06/06/2006, 19h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo