Cours par Webcam

Cours par Webcam

Formateur Web pour adultes depuis plus 11 ans, je vous propose des COURS collectifs par WEBCAM en LIVE pour booster vos connaissances et être autonome dans la création de site.

En savoir plus

PHP - Bases

PHP - Algorithmie

PHP - Chaîne

PHP - Tableau

PHP - Formulaires

PHP - Fonctions Usuelles

Données entres pages

Environnement et Interaction

PHP objet (POO)

Facebook
Twitter
LinkedIn

Protection d’une chaîne en PHP

Certains caractères sont interprétés pas PHP et ont une signification particulière, comme les apostrophes qui délimitent une chaîne. Il est important donc de protéger ces caractères, afin d’éviter de les utiliser comme des commandes au lieu d’être pris tels quels. L’oubli de protection peut être la base de problèmes de sécurité comme l’injection SQL ou le Cross Site Scripting

Protéger les guillemets et les apostrophes

Si vous avez besoin de protéger automatiquement les guillemets, les apostrophes et la barre oblique utilisée pour l’échappement en PHP, utilisez la fonction addslashes(). Cette fonction est utile pour éviter les injections SQL

<textarea>
<?php
$cc = "Hello ' \n PHP!";
echo addslashes($cc);
?>
</textarea>

Affichage

Vous remarquez que l’apostrophes a été échappé mais que le retour à la ligne se produit quand même dans la zone de texte. Pour pouvoir aussi convertir les fins de lignes et les retours chariots (\n et \r), utilisez la fonction addcslashes() et indiquez en deuxième paramètre la liste des caractères à échapper.

<textarea>
<?php
$cc = "Hello ' \n PHP!";
echo addcslashes($cc,"'\n");
?>
</textarea>

Affichage

Vous pouvez faire l’opération inverse et récupérer une chaine échappée pour la transformer en chaine simple grâce au fonction stripslashes() et stripcslashes()

<textarea>
<?php
$cc = "Hello \' PHP!";
echo stripslashes($cc);
?>
</textarea>

Affichage

Protection pour HTML

Lorque PHP envoie, pour l’affichage d’éléments dans une page HTML, certains caractères réservés en HTML comme <>, ils seront interprétés et non affichés tels quels. Ainsi <br?> provoquera un changement de ligne.

Conversion des entités

PHP peut convertir les caractères spéciaux (<, >, et &) en entités HTML avec la fonction htmlspecialchars()

<?php
$cc = "bonjour &lt; ' <br> daniel";
echo htmlspecialchars($cc);
?>

Affichage

bonjour &lt; ' <br> daniel

Par défaut seul les caractères <> et & sont protégés mais pas l’apostrophe sauf si vous utilisez comme deuxième paramètre la valeur ENT_QUOTES

<?php
$cc = "bonjour &lt; ' <br> daniel";
echo htmlspecialchars($cc,ENT_QUOTES);
?>

Si vous regarder le code source de la page, on s’aperçoit que l’apostrophe est protégé

bonjour &amp;lt; &#039; &lt;br&gt; daniel

Il est possible de convertir tous les caractères spéciaux sous forme d’entités (comme les caractères accentués) avec la fonction htmlentities()

<?php
$cc = "bonjour &lt; é <br> daniel";
echo htmlentities($cc);
?>

Code source

Si vous regarder le code source de la page, on s’aperçoit que le é est protégé

bonjour &amp;lt; &eacute; <br> daniel

Si vous voulez réaliser l’opération inverse, vous devez utiliser la fonction html_entity_decode().

Conversion des changements de lignes

En HTML le caractère de fin de ligne \n est considéré comme une espace (ou caractère blanc). Pour transformer les retours à la ligne \n en changement de ligne HTML <br>, utiliser la fonction nl2br()

<?php
$cc = "bonjour \n daniel";
echo $cc;
echo "<br>";
echo nl2br($cc);
?>

Affichage

bonjour daniel
bonjour
daniel

Suppression des balises HTML

Une autre manière de protéger les sorties HTML est de supprimer les balises avec la fonction strip_tags(). Cette fonction peut néanmoins autoriser certaines balises si elles sont listées en deuxième paramètre de la fonction

<?php
$cc = "<em>bonjour</em> <sub>daniel</sub> et <sup>robert</sup>";
echo $cc; // pas de suppression de balises
echo "<br>";
echo strip_tags($cc,'<em>'); // suppression de toutes les balise sauf <em>
?>

Affichage

bonjourdaniel etrobert 
bonjour daniel et robert

Dans cet exemple, sur la deuxième ligne, toutes les balises sont supprimées sauf la balise em.

A lire aussi

tutowebdesign

Afficher du contenu au scroll

Afficher du contenu au scroll Voici un effet impressionnant et pourtant très facile à mettre en place sur vos pages. Le principe consiste à faire

Lire »