Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/06/2007, 19h49   #1
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
Par défaut [SQL] Protéger les requetes SQL d'injection comme du php, javascript, ect

Bonjour,

J'ai un formulaire avec un champ texte pouvant écrire beaucoup de ligne d'écriture. On peut notament par exemple écrire un script PHP dans le champs du genre

Code php :
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
<?php
 
function NumTel($tel)
{
    $ch = 10;                               // Numéro à 10 chiffres
    $tel = eregi_replace('[^0-9]',"",$tel); // supression sauf chiffres
    $tel = trim($tel);                      // suppression espaces avant et après
    if (strlen($tel) > $ch)
    {
        $d = strlen($tel) - $ch; // retrouve la position pour ne garder
                                 // que les $ch derniers
    }
    else
    {
        $d = 0;
    }
    $tel = substr($tel,$d,$ch); // récupération des $ch derniers chiffres
    $regex = '([0-9]{1,2})([0-9]{1,2})([0-9]{1,2})([0-9]{1,2})([0-9]{1,2})$';
    $newtel = eregi_replace($regex,
        '\\1-\\2-\\3-\\4-\\5',$tel); // mise en forme
    return $newtel; /* Exemple : 03-81-51-45-78  */
}
 
// Appel de la fonction:
 
echo "Téléphone : ".NumTel($teldom);
 
?>

le problème, lors de l'éxecution de ma requete j'ai un message d'erreur, car celui ci interprete le code PHP.

Comment protéger toute ma requete d'un coup avec une fonction comme mysql_real_escape_string() par exemple.

Voici la requete que j'aimerai protéger :

Code php :
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
// SQL : Ajout du nouveau inventaire_server
	$sql = "INSERT INTO inventaire_server VALUES ( '', 
	'" . strtoupper(presVar($_POST, 'inventaire_server_hostname')) . "',
	'" . presVar($_POST, 'inventaire_server_ip') . "',
	'" . strtoupper(presVar($_POST, 'inventaire_server_numero_serie')) . "',
	'" . presVar($_POST, 'modele') . "',
	'" . presVar($_POST, 'inventaire_server_id_os') . "',
	'" . presVar($_POST, 'inventaire_server_type') . "',
	'" . presVar($_POST, 'inventaire_server_mise_service') . "',
	'" . presVar($_POST, 'inventaire_server_id_situation') . "',
	'" . presVar($_POST, 'inventaire_server_date_reception') . "',
	'" . presVar($_POST, 'inventaire_server_numero_reception') . "',
	'" . presVar($_POST, 'inventaire_server_id_batiment') . "',
	'" . presVar($_POST, 'inventaire_server_id_etage') . "',
	'" . ucfirst(presVar($_POST, 'inventaire_server_commentaire_server')) . "',
	'" . presVar($_POST, 'inventaire_server_id_contrat_maintenance') . "',
	'" . presVar($_POST, 'inventaire_server_contrat_date_du') . "',
	'" . presVar($_POST, 'inventaire_server_contrat_date_au') . "',
	'" . ucfirst(presVar($_POST, 'inventaire_server_responsable_appli_prenom')) . "',
	'" . NumTel(presVar($_POST, 'inventaire_server_responsable_appli_tel')) . "',
	'" . strtoupper(presVar($_POST, 'inventaire_server_responsable_appli_nom')) . "',
	'" . presVar($_POST, 'prenom') . "')";
	//Sécuriter pour éviter les injection SQL
	mysql_real_escape_string($sql);
	//Execution de la requete
	mysql_query($sql)or die(mysql_error());

Merci d'avance

Arnaud
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2007, 14h52   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 827
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 827
Points : 3 459
Points : 3 459
mysql_real_escape_string( ) doit être utilisée sur chacun des éléments insérés dans la BdD et non pas sur la requête complète.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 15h32   #3
Invité régulier
 
Inscription : mars 2007
Messages : 29
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 29
Points : 9
Points : 9
tu peux utiliser intval() pour les entiers ou htmlentities() aussi pour les chaine de caractères .
pour les <textarea> tu as un truc pas mal qui s'appel nl2br() qui te permet de faire les sauts de ligne direct sans avoir a ecrire <br/> mias attention ce n'est pas une sécurité juste un plus quoi
jermel2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h58.


 
 
 
 
Partenaires

Hébergement Web