JeuWeb - Crée ton jeu par navigateur

Version complète : Bonnes pratiques du SQL
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Pages : 1 2
Salut Pascaltje et les autres 2
merci pour cette piqure de rappel qui fait du bien 2

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_string:(Manuel 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 2
Merci et a bientot!
Corentone
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 16
Merci Damen! C'est vrai que j'avais negligé la recherche cette fois desolé 6, je voulais profiter de ce topic et j'espere que ce point sera plus abordé dans le tuto 2

D'apres ce que j'ai pu voir du topic:
Code 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é)...
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 :
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.
Merci pour le tuyau naholyr 16 je vais le mettre dans mon code 2
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é).
Voici le code que j'utilise, qui a l'avantage de traiter les tableaux récursivement :

Code 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
Ca vient quand le chapitre 2 ? 1
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 ...
Pages : 1 2
URLs de référence