Nettoyer les entrées en PHP
-
Nettoyage des entrées HTML à l’aide de
htmlentities()
en PHP -
Nettoyage des entrées HTML à l’aide de
filter_var()
en PHP - Assainissement des requêtes SQL en PHP
Les données utilisateur doivent être stockées dans la base de données, mais avant de les stocker dans la base de données, nous devons nous assurer que les données malformées ne sont pas transmises ; sinon, il bousillera la base de données. Cela protégera l’intégrité des données. Les utilisateurs confondent souvent la désinfection et la validation. La seule différence entre eux est que la validation garantit que les données sont dans le bon format ou non, tandis que plus tard, elle s’assure qu’aucun caractère illégal n’est présent dans les données. Dans l’article d’aujourd’hui, nous allons apprendre à nettoyer les données d’entrée en PHP avant de les transmettre à la base de données (RDBMS/NoSQL).
L’entrée la plus courante qui doit être nettoyée est le HTML, l’entrée via des requêtes SQL et les informations de profil utilisateur.
Nettoyage des entrées HTML à l’aide de htmlentities()
en PHP
C’est une fonction intégrée fournie par PHP qui convertit tous les caractères en entités HTML. Vous pouvez également utiliser htmlspecialchars()
, la seule différence entre ces deux fonctions est que htmlspecialchars()
convertit les caractères spéciaux en entités HTML tandis que htmlentities()
convertit tous les caractères.
Syntaxe de htmlentities()
en PHP
htmlentities(string $string, $flags, $characterSet, boolean $doubleEncode);
Paramètres
$string
: C’est un paramètre obligatoire, qui prend des données d’entrée sur lesquelles la conversion doit être effectuée.$flags
: il s’agit d’un paramètre facultatif qui spécifie comment gérer les encodages invalides, les guillemets et le type de document utilisé. Certains des drapeaux sontENT_COMPAT
,ENT_IGNORE
,ENT_HTML5
,ENT_NOQUOTES
, etc.$characterSet
: c’est un paramètre facultatif qui spécifie quel jeu de caractères utiliser. Certains des jeux de caractères sontUTF-8
,ISO-8859-1
, etc.doubleEncode
: C’est un paramètre optionnel qui spécifie s’il faut encoder ou non les entités HTML existantes. La valeur par défaut seratrue
, ce qui convertira tout.
Valeur de retour
La sortie de la fonction ci-dessus contient une chaîne convertie. Il renverra une chaîne vide si le paramètre de chaîne contient un codage invalide à moins que des indicateurs ne soient définis comme ENT_IGNORE
ou ENT_SUBSTITUTE
.
Exemple de code :
<?php
$str = '<a href="https://www.google.com">Go to google.com</a>';
echo htmlentities($str);
?>
Production :
<a href="https://www.google.com">Go to google.com</a>
Nettoyage des entrées HTML à l’aide de filter_var()
en PHP
Il s’agit d’une fonction intégrée fournie par PHP dans laquelle la validation et l’assainissement sont effectués sur les données d’entrée.
Syntaxe de filter_var()
en PHP
filter_var($inputValue, $filterType);
Paramètres
$inputValue
: C’est un paramètre obligatoire, qui prend des données d’entrée sur lesquelles le contrôle de filtre sera appliqué.$filterType
: C’est un paramètre obligatoire, qui spécifie quel contrôle de filtre doit être effectué sur les données d’entrée. Les valeurs prises en charge sont :FILTER_VALIDATE_INT
: Si la donnée d’entrée est un entier valide ou non.FILTER_SANITIZE_STRING
: si les données d’entrée sont une chaîne valide ou non et supprimez toutes les balises HTML d’une chaîne d’entrée.FILTER_VALIDATE_IP
: si les données d’entrée sont une adresse IP valide ou non.FILTER_SANITIZE_EMAIL
: si les données saisies sont une adresse e-mail valide ou non. Filter var supprimera d’abord les caractères illégaux, puis la validation sera effectuée.
Valeur de retour
Renvoie la valeur filtrée si elle est passée avec succès.
Exemple de code :
<?php
$inputString = "<p>Hello World! Welcome to PHP tutorial</p>";
$newstr = filter_var($inputString, FILTER_SANITIZE_STRING);
echo $newstr. "\n";
?>
Production :
Hello World! Welcome to PHP tutorial
Assainissement des requêtes SQL en PHP
Pour éviter l’injection SQL, les développeurs doivent toujours utiliser PDO
/MySQLi
. PDO est une couche d’abstraction de base de données. PDO nettoie et intègre des données externes dans une requête SQL en toute sécurité et évite ce type de problèmes. Avant d’envoyer des données à la base de données, traitez les données à l’aide de filter_var()
.
Exemple de code :
<?php
$servername = "hostname";
$username = "username";
$password = "password";
$dbname = "databaseName";
$lastname = "doe";
$connection = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$statement = $connection->prepare("SELECT id, email, firstname, lastname FROM Users WHERE lastname=:lastname");
$statement->execute(['lastname' => $lastname]);
$resultOuput = $statement->setFetchMode(PDO::FETCH_ASSOC);
?>
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn