Sécurité Formulaire et SQL
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Sécurité Formulaire et SQL



  1. #1
    squal31

    Sécurité Formulaire et SQL


    ------

    Petit post rapide au niveau de la sécurité après un formulaire et avant l'enregistrement des données dans une Base SQL.

    Voila ce que j'ai fait :
    Code:
    // Récupération des données du formulaire
    $cp_form = $_POST['cp'];
    $cp_form = htmlentities($cp_form);
    
    // Insertion dans la base SQL
    // $sql = 'INSERT INTO ...la suite'
    Cela suffit ou pas ?

    Merci d'avance de vos réponses

    -----
    Ce n'est pas parce que les choses sont difficiles que nous n'osons pas, c'est parce ...

  2. #2
    invitea0ecda6e

    Re : Sécurité Formulaire et SQL

    La mailleure manière de procéder est de passer par PDO:
    http://php.net/manual/fr/book.pdo.php
    Un tuto ici: http://www.siteduzero.com/tutoriel-3...s-donnees.html

  3. #3
    Dormeur74

    Re : Sécurité Formulaire et SQL

    Pour moi qui ne suis pas un spécialiste capable de taper du PHP au kilomètre, côté sécurité : RAS. Tu as utilisé la méthode POST, c'est bien. Si tu avais utilisé la méthode GET, je n'aurais pas dit la même chose.

    La meilleure technique, à mon humble avis, est de faire des essais. On apprend beaucoup dans l'erreur.

    Si je réalise un formulaire contenant une simple zone de texte multiligne et si je tape dedans la phrase suivante :

    Ceci est un essai permettant de tester les virgules, l'apostrophe, les "guillemets", les accents comme é, è, ê, à, ù et ï, ainsi que...

    ...les sauts de ligne.
    ...ton code peut donner ceci :

    Ceci est un essai permettant de tester les virgules, l'apostrophe, les "guillemets", les accents comme é, è, ê, à , ù et ï, ainsi que... ...les sauts de ligne.
    Pas question de mettre des hiéroglyphes dans ta base de données. Je te laisse tirer tout seul les conclusions qui s'imposent.

  4. #4
    invitea0ecda6e

    Re : Sécurité Formulaire et SQL

    Citation Envoyé par Dormeur74 Voir le message
    Pour moi qui ne suis pas un spécialiste capable de taper du PHP au kilomètre, côté sécurité : RAS. Tu as utilisé la méthode POST, c'est bien. Si tu avais utilisé la méthode GET, je n'aurais pas dit la même chose.
    Le POST ne t'évite pas les injections SQL! Pour ça il te faut absolument effectuer un mysql_real_escape_string sur toutes tes variables.
    Sauf dans le cas de PDO qui le gère tout seul

  5. A voir en vidéo sur Futura
  6. #5
    Dormeur74

    Re : Sécurité Formulaire et SQL

    Désolé, je pensais que la question portait sur l'affichage d'informations indiscrètes dans l'URL.

    Avant d'exécuter une requête sql, il faut :

    - vérifier par isnumeric() que les valeurs numériques sont bien des valeurs numériques (on imagine facilement ce qui se passe si l'utilisateur tape "2; DROP TABLE matable" au lieu de la quantité "2"

    - et échapper apostrophes et caractères spéciaux aux valeurs texte comme l'a dit Tlaloc, sans oublier de délimiter ces valeurs par des guillemets dans les requêtes SQL. Comme ceci par exemple :

    Code:
    $marequete= "SELECT * FROM matable WHERE code='".$code."'";

  7. #6
    squal31

    Re : Sécurité Formulaire et SQL

    Merci a tous pour vos réponses, je suis en train de modifier mes formulaires et mon code qui suit derrière en fonction de vos remarques.
    Encore merci
    Ce n'est pas parce que les choses sont difficiles que nous n'osons pas, c'est parce ...

  8. #7
    squal31

    Re : Sécurité Formulaire et SQL

    Bon alors je sais certains vos me dire qu'il y à peu près 50 000 post sur le net, mais après avoir passé la quasi totalité de la journée dessus, je peux affirmer que j'y arrive pas ...

    Impossible d'enregistrer correctement une adresse du style :
    coucou l'ssd<h1>sdf</>

    Ou <h1> et </> se supprimeraient ...

    Merci d'avance de votre aide ...
    pascal


    Alors voila mon code en debut de page pour récupérer les données :
    Code:
    // Je récupère les posts puis
    
    // avec les fonction secu_variable()
            
            secu_varible($cp_form);
    	echo '<br />Dans rub marche : '.$cp_form.'<br />';
    	
    	secu_varible($ville_form);
    	$ville_form = stripslashes($ville_form);
    	echo '<br />Dans rub marche : '.$ville_form.'<br />';
    	
    	secu_varible($adresse_form);
    	$adresse_form = stripslashes($adresse_form);
    	echo '<br />Dans rub marche : '.$adresse_form.'<br />';
    	
    	secu_varible($jour_form);
    	echo '<br />Dans rub marche : '.$jour_form.'<br />';
    	secu_varible($couvert_form);
    	echo '<br />Dans rub marche : '.$couvert_form.'<br />';
    	secu_varible($duree_form);
    	echo '<br />Dans rub marche : '.$duree_form.'<br />';
    	secu_varible($heb_form);
    	echo '<br />Dans rub marche : '.$heb_form.'<br />';
    Puis pour afficher re-afficher les donner dans le formulaire :
    Code:
    <input name="ville" type="text" id="ville" <?php if (!empty($ville_form)) echo 'value="'.stripslashes($ville_form).'"'; ?> size="35" class="text"/>
    Lors de l'enregistrement du formulaire :
    Code:
    echo '<br />';
    										echo $ville_form;
    										echo '<br />';
    										
    										$sql = sprintf("SELECT id FROM marche WHERE 
    													cp='%d' 
    													and ville='%s'
    													and adresse='%s'
    													and jour='%d'",
    													secu_sql($cp_form),
    													secu_sql($ville_form),
    													secu_sql($adresse_form),
    													secu_sql($jour_form));
    Les 2 fonctions :
    Code:
    function secu_varible($var)
    	{
            
    		echo'<br>Dans securité variable en entrée : '.$var.'<br>';
    		
    		if (is_numeric($var))//si c'est un nombre
            	{
    				return intval($var);//je le converti en entier (pour éviter les br a ,)
    			}
    			
            
    		elseif (get_magic_quotes_gpc())
    			{
    				$var = stripslashes($var);//la pour les \
    			}
    		
    		$var = strip_tags( trim($var) );
    		
    		echo'<br>Dans securité variable en sortie : '.$var.'<br>';
    		
    		return $var;
    	}
    	
    function secu_sql($var)
    	{	
                    $var = htmlspecialchars( mysql_real_escape_string( $var ) );
    		
    		return $var;
    	}
    Ce n'est pas parce que les choses sont difficiles que nous n'osons pas, c'est parce ...

  9. #8
    invitea0ecda6e

    Re : Sécurité Formulaire et SQL

    Bon j'ai regardé en diagonale mais déjà:
    secu_varible($cp_form);
    Ta fonction secu_variable ne sert à rien si tu n'attribues pas la valeur retournée à ta variable initiale ou à une nouvelle variable!
    Je pense que ce que tu veux faire, c'est ça:
    $cp_form = secu_varible($cp_form);

  10. #9
    squal31

    Re : Sécurité Formulaire et SQL

    Impeccable ! Ben voila pourquoi rien ne fonctionné normalement ...
    Merci de ton oeil extérieur ...
    Ce n'est pas parce que les choses sont difficiles que nous n'osons pas, c'est parce ...

Discussions similaires

  1. echec a la mise a jour securite sql server 2000 pack4 kb960082
    Par mamiefranckie dans le forum Internet - Réseau - Sécurité générale
    Réponses: 0
    Dernier message: 13/07/2009, 18h23
  2. Sql !!
    Par invite1bc2614c dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 05/04/2009, 13h37
  3. SQL ou Access ????
    Par invite40ef4a95 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 09/10/2008, 17h10
  4. help en sql
    Par invitebb36e395 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 09/12/2005, 15h58