JeuWeb - Crée ton jeu par navigateur
Bonnes pratiques du SQL - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Bonnes pratiques du SQL (/showthread.php?tid=1304)

Pages : 1 2


RE: Bonnes pratiques du SQL - corentone - 15-07-2007

Salut Pascaltje et les autres Smile
merci pour cette piqure de rappel qui fait du bien Smile

Neanmoins je me pose des questions sur la securité:
Quels fonctions dois-je executer a tout prix sur mes variables avant tout traitement SQL?
Code :
magic_quotes_gpc On On
magic_quotes_runtime Off Off
magic_quotes_sybase Off Off
Ceci concerne mes magic_quote. j'ai vu qu'il n'etait pas conseillé de faire un addslash lorsque les magic quote sont actifs...Votre avis?

Je pense faire un mysql_real_escape string. mais lorsque je recupere les données je rajoute des slashs?

Concernant mysql_real_escape_stringSadManuel mysql)
Code :
Note: Si magic_quotes_gpc est activée, appliquez d'abord la fonction stripslashes() à vos données. Utiliser cette fonction sur des données qui ont déjà été protégées, les protègera une deuxième fois.

Donc je ne sais plus a quoi obeir! Dois-je executer une fonction meme si les magic quotes sont activés?Dois-je faire un addslash et ensuite faire un stripslash lors de la recuperation, ou bien un mysql_real_escape_string?Ou bien les trois?

Voila...j'espere que cette question et vos reponses pourront aider d'autres personnes Smile
Merci et a bientot!
Corentone


RE: Bonnes pratiques du SQL - Plume - 15-07-2007

Désactiver les magic quotes et toujours travailler comme si elles étaient désactivées. Ainsi que faire une vérification de l'activité par défaut ou non des magic quotes. Fais une recherche sur le fofo, question déjà discutée Wink


RE: Bonnes pratiques du SQL - corentone - 15-07-2007

Merci Damen! C'est vrai que j'avais negligé la recherche cette fois desolé :heuuu:, je voulais profiter de ce topic et j'espere que ce point sera plus abordé dans le tuto Smile

D'apres ce que j'ai pu voir du topic:
Code PHP :
<?php 
Code PHP
:

if(
get_magic_quotes_gpc())
{
$log = stripslashes($_POST['login']);
$pass = stripslashes($_POST['pass']);
}
else
{
$log = $_POST['login'];
$pass = $_POST['pass'];
}

$log = mysql_real_escape_string($log);
$pass = mysql_real_escape_string($pass);

$requete = "SELECT login, password, id, droitsAdmin FROM users WHERE login='".$log."' AND password='".$pass."'";
$exec_req = mysql_query($requete) or die ('erreur de connexion');
$row = mysql_fetch_row ($exec_req);

if (
$row[0] == null )
{
$this->mauvaislog= "Votre login ou votre mot de passe sont incorrects.";
}
else
{
//connexion
}
Code source de Nessper (je précise...)

Donc l'ideal serait cela, avec un stripslashes lorsque je veux lire les données?
Merci de ton aide Damen.
Corentone

PS: je ne pense pas que desactiver les magic qotes soit possibles sur free.fr ou mon 1000gp ovh(mutualisé)...


RE: Bonnes pratiques du SQL - naholyr - 16-07-2007

Le plus simple pour désactiver les magic_quotes_gpc une bonne fois pour toute si jamais tu n'as pas accès au php.ini, c'est de placer ce bout de code dans le fichier qui est systématiquement inclus dans toutes tes pages avant toute autre exécution (on a toujours un «inc/common.php» pour cet usage) :
Code PHP :
<?php 
if(get_magic_quotes_gpc()) {
foreach (
$_GET as $i => $value) if (is_string($value)) $_GET[$i] = stripslashes($value);
foreach (
$_POST as $i => $value) if (is_string($value)) $_POST[$i] = stripslashes($value);
foreach (
$_COOKIE as $i => $value) if (is_string($value)) $_COOKIE[$i] = stripslashes($value);
}

Comme ça tu n'as plus à t'en préoccuper, par contre évidemment c'est dommage ces ressources perdues trois fois : une fois par l'option qui fait un addslashes, et une fois par le script qui fait des stripslashes, puis une troisième fois par le script qui refait un addslahes via mysql_real_escape_string(), mais on n'a hélas pas bien le choix.


RE: Bonnes pratiques du SQL - corentone - 16-07-2007

Merci pour le tuyau naholyr Wink je vais le mettre dans mon code Smile


RE: Bonnes pratiques du SQL - naholyr - 16-07-2007

On me dit dans l'oreillette que mon code était très mauvais tel quel puisqu'il risquait de transformer tous tes tableaux (genre dans les cookies) en un vilain "Array" peu explicite.
Il faut bien sûr vérifier qu'on a bien une chaine avant d'appliquer le stripslashes (code édité).


RE: Bonnes pratiques du SQL - Haiken - 16-07-2007

Voici le code que j'utilise, qui a l'avantage de traiter les tableaux récursivement :

Code PHP :
<?php 
set_magic_quotes_runtime
(FALSE);
if(
get_magic_quotes_gpc()){
function
remove_magic_quotes(&$var) {
if(
is_array($var)){
array_walk($var, "remove_magic_quotes");
} else if (
is_string($var)) {
$var=stripslashes($var);
}
}

remove_magic_quotes($_POST);
remove_magic_quotes($_GET);
remove_magic_quotes($_REQUEST);
remove_magic_quotes($_COOKIE);
}

Je l'ai honteusement repiquée à partir de commentaires dans la doc officielle php


RE: Bonnes pratiques du SQL - Plume - 26-11-2007

Ca vient quand le chapitre 2 ? Big Grin


RE: Bonnes pratiques du SQL - Zamentur - 15-12-2007

tuto disponible au format wiki
C'est ici

NB: j'ai pas fait de modif, j'ai juste mis en forme donc hésitez pas à modifier corriger ...