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

Langage PHP Discussion :

Sécurité du formulaire


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Sécurité du formulaire
    Bonsoir,

    J'espère que vous pourrez m'aider

    Je récupère de informations en POST sur une page PHP, et avant qu'elles soient traitées, je veux être certain que les données viennent de MON formulaire, et pas d'un formulaire (identique) qui serait hébergé sur un autre site.

    Je pensais tester le REFERER sur la page qui récupère les infos, mais certains utilisateurs le désactive. Interdire l'accès à la page pour les REFERER différents de 'monsite.com' + ceux vides, c'est pas cool.

    Auriez-vous une autre solution pas trop lourde à mettre en place ?

    Merci d'avance et bonne soirée !
    MrTheMerovingian

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Avec cette recette de cuisine ?
    formulaire :
    - créer une variable de session en mélangeant bien les ingrédients,
    - ajouter un champ input hidden
    - (on peut même) hacher menu la valeur transmise via le formulaire,
    - et/ou ajouter un grain de sel.
    traitement :
    - mettre en balance les 2 valeurs,
    - servir frais, ou jeter si les 2 valeurs ne s'accordent pas.

    formulaire.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php session_start(); ?>
    <?php // controle de formulaire
    	$_SESSION['form_controle'] = 'monFormulaireContact'.rand(); // nom + nombre aléatoire 
    	$_SESSION['form_salt'] = 'envoi de mon formulaire contact'; // grain de sel
    ?>
    	<form method="post" action="traitement.php">
    		<input type="hidden" name="ctrlform" value="<?php echo md5($_SESSION['form_controle'].$_SESSION['form_salt']); ?>"/>
    		<input type="text" id="idtexte" name="texte" value=""/>
    		<input type="submit" name="envoiform" value="ok"/>
    	</form>
    traitement.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php session_start(); ?>
    <?php
    // si le formulaire est envoyé
    if(isset($_POST['envoiform']) && $_POST['envoiform']=='ok')
    {
    	// on verifie les sessions de controle
    	if(!$_SESSION['form_controle'] || $_SESSION['form_controle']=='' 
    		|| !$_SESSION['form_salt'] || $_SESSION['form_salt']=='' || $_POST['ctrlform']=='' 
    		|| md5($_SESSION['form_controle'].$_SESSION['form_salt']) != $_POST['ctrlform']) 
    	{
    		// pas ok : 
    			// message
    		echo 'Arrache-toi de là, t\'es pas d\'ma bande,<br />';
    		echo 'Casse-toi tu pues, et marche à l\'ombre !<br />';
    		exit;
    			// OU redirection
    		//header('location: index.php');
    		//exit;
    	} else {
    		// ok : on traite
    			// important : on vide les sessions de controle
    			$_SESSION['form_controle'] = ''; 
    			$_SESSION['form_salt'] = '';
    			// traitement ...
    			echo 'ok ! on traite !<br />';
    			echo 'texte : '.$_POST['texte'].'<br />';
    			// [.....]
    	}
    	unset($_post);
    }
    ?>
    2ème effet kiss-cool :
    Comme on vide les sessions, pas de risque en cas d'"actualisation" de la page.
    Le traitement ne pourra avoir lieu qu'une seule et unique fois.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Super, merci bcp ! En plus j'ai droit à un code déjà prêt, que demander de mieux, un vrai cuisinier !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Euuh, tu changeras quand même le message !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		echo 'Arrache-toi de là, t\'es pas d\'ma bande,<br />';
    		echo 'Casse-toi tu pues, et marche à l\'ombre !<br />';
    (copyright : Renaud)

    Quoi que ...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Je préfère ne pas avoir d'ennuis avec Renaud ouai

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

Discussions similaires

  1. [AJAX] Sécurité du formulaire
    Par klakman dans le forum AJAX
    Réponses: 5
    Dernier message: 05/05/2010, 21h30
  2. [AC-2007] Sécurité et formulaire
    Par AlinR dans le forum IHM
    Réponses: 2
    Dernier message: 24/02/2010, 18h13
  3. [AC-2003] Sécurité modification formulaire impossible
    Par MODOGROSSO dans le forum Sécurité
    Réponses: 0
    Dernier message: 05/10/2009, 17h51
  4. Réponses: 7
    Dernier message: 06/04/2007, 14h39
  5. [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, 20h38

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