Liste des fonctions pour sécuriser des variables

Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour, je cherche des fonctions qui pourront sécuriser une variable avant insertion dans la bdd (j'ai déjà chercher mais je n'ai pas trouvé grand chose....)
Je tiens juste a préciser que j'utilise déjà les requêtes préparés et que j'utilise :
htmlspecialchars($var, ENT_QUOTES);

pour l'affiche de la variable...
Merci d'avance
Nils0
A voir également:

2 réponses

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Si tu utilises la méthode prepare de PDO correctement, c-a-d avec des paramètres nommés (:nom) ou non nommés (?) pour substituer les valeurs réelles, tu n'as besoin d'aucun autre traitement sur ces valeurs pour sécuriser ta requête :
Appeler PDO::prepare() et PDOStatement::execute() [...] aident à prévenir les attaques par injection SQL en éliminant le besoin de protéger les paramètres manuellement.
https://www.php.net/manual/fr/pdo.prepare.php

Bonne journée,
0
Utilisateur anonyme
 
Bonjour, merci de votre réponse ,
j'ai quand même créer cette fonction :
class Securite {
	// Données entrantes
    public static function bdd($donnee, $type = null){
        if(!isset($bdd)){
        	$bdd = connexion_bdd();
        }
        if(isset($type)){
        	$liste_type = array("string", "float", "int");
        	if(in_array($type, $liste_type)){
        		if($type == "string"){
        			if(is_string($donnee)){
        				$donnee = htmlspecialchars($donnee, ENT_QUOTES);
        			} else {
        				return false;
        			}
        		}
        		if($type == "float"){
        			if(is_float($donnee)){
        				$donnee = floatval($donnee);
        			} else {
        				return false;
        			}
        		}
        		if($type == "int"){
        			if(is_int($donnee)){
        				$donnee = intval($donnee);
        			} else {
        				return false;
        			}
        		}
        		return $donnee;
        	} else {
        		return false;
        	}
        } else {
        	// si on précise rien
            $donnee = htmlspecialchars($donnee, ENT_QUOTES);
            return $donnee;
        }
    }
    // Données sortantes
    public static function html($donnee){
        $donnee = htmlspecialchars($donnee, ENT_QUOTES);
        return $donnee;
    }
}


Vous en pensez quoi ?
Merci
Nils0
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Utilisateur anonyme
 
Bonjour

Les fonctions html spécialchar et consore servent lors de l'affichage. .. PAS pour l'insertion en bdd.
0
Utilisateur anonyme > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
oui je sais mais c'est mieux que rien non ?
0
Utilisateur anonyme
 
ou sinon, je mets strval($donnee);
0
Utilisateur anonyme
 
ou peut-être avec un filter_var
0
Utilisateur anonyme
 
Désolé de redemander votre aide mais j'aimerais avoir votre avis :
class Securite {
    // donnée à afficher
    public static function html($donnee, $type, $taillemax = null){
        if(!isset($bdd)){
            $bdd = connexion_bdd();
        }
        $liste_type = array("string", "float", "int");
        if(in_array($type, $liste_type)){
            if(isset($taillemax)){
                if(intval($taillemax) >= strlen($donnee)){
        	       if($type == "string"){
                      $donnee = $donnee;
        	       }
        	       if($type == "float"){
        		      $donnee = floatval($donnee);
        	       }
        	       if($type == "int"){
        		      $donnee = intval($donnee);
        	       } 
                } else {
                    return false;
                }
            } else {
                if($type == "string"){
                    $donnee = $donnee;
                }
                if($type == "float"){
                    $donnee = floatval($donnee);
                }
                if($type == "int"){
                    $donnee = intval($donnee);
                }
            }
            $donnee = preg_replace('/\s{2,}/', ' ', $donnee);
            $donnee = trim($donnee);
        	return htmlspecialchars($donnee, ENT_QUOTES);
        } else {
        	return false;
        }
    }

    // donnée à insérer dans la bdd
    public static function bdd($donnee, $type, $taillemax = null){
        if(!isset($bdd)){
            $bdd = connexion_bdd();
        }
        $liste_type = array("string", "float", "int");
        if(in_array($type, $liste_type)){
            if(isset($taillemax)){
                if(intval($taillemax) >= strlen($donnee)){
                    if($type == "string"){
                        $donnee = $donnee;
                    }
                    if($type == "float"){
                        $donnee = floatval($donnee);
                    }
                    if($type == "int"){
                        $donnee = intval($donnee);
                    }
                } else {
                    return false;
                }
            } else {
                if($type == "string"){
                    $donnee = $donnee;
                }
                if($type == "float"){
                    $donnee = floatval($donnee);
                }
                if($type == "int"){
                    $donnee = intval($donnee);
                }
            }
            return $donnee;
        } else {
            return false;
                }
    }
}
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Sur l'utilité. .. toujours aucun intérêt en vue...

Sur la forme... regarde l'écriture ternaire et les switch case.
0
Utilisateur anonyme
 
D'accord merci, la 1er fonction sert contre les failles XSS
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Utilisateur anonyme
 

la 1er fonction sert contre les failles XSS

Bon..
- déjà .. la 1 et la 2 sont identiques .... donc aucun interret
- La variable $bdd n'est utilisée nul part ....
- Pour se protéger des failles XSS ... il faut s'assurer qu'il n'y a pas dans le texte des choses comme
<script 
....
</script> 


Bref...Plusieurs techniques permettent d’éviter le XSS : (à n'utiliser QUE POUR L'AFFICHAGE )
- Utiliser la fonction htmlspecialchars(), il convertit les caractères spéciaux en entités HTML.
- Utiliser la fonction htmlentities() qui est identique à htmlspecialchars() sauf qu’elle filtre tout les caractères equivalents au codage html ou javascript.

Tes autres "fonctions" .. ne servent à rien ( on te l'a déjà dit non ? )
0
Utilisateur anonyme
 
Donc, je garde que la fonction "html" ?
Désolé mais je suis ados et j'ai du mal a comprendre certaines notions ....
Merci
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Utilisateur anonyme
 
.... Tu ne gardes QUE pour l'affichage (donc en l’occurrence ce qui semble être ta fonction "html" (dans laquelle tu retire tout le code inutile...))
Sachant que ce qui est réellement utile pour l'affichage et la protection contre le xss donc... c'est le htmlspecialchars (et/ou le htmlentities).
Je ne sais pas comment te le dire autrement ..... ados ou pas... à un moment faut lire ce que les gens écrivent et essayer de le comprendre .... sans qu'on est à le répéter 250 fois ...
0