Sécuriser une variable à l'affichage
Bonjour à toutes et à tous,
Après avoir parcourus énormément de site et de forum, la réponse à ma question est toujours différentes suivant la communauté interrogé et j'ai donc décidé de poser directement ma question ici afin de trouver enfin une réponse clair et concise à mon problème ^^
Mon projet est basé sur une architecture MVC. Donc d'une manière très simplifié voici comment je récupère et j'affiche les données de ma base de données.
Formulaire :
Code:
<input type='text' name='id_toto' />
Controllers :
Code:
$id_client = addslashes($_POST['id_toto'])
Models :
Code:
1 2 3 4 5 6 7 8 9 10
| public function getInfoClient($id_client){
$requete = $this->getDb()->prepare("
SELECT *
FROM client
WHERE id = :id
");
$requete->bindValue(':id', $id_client);
$requete->execute();
return $requete->fetch(PDO::FETCH_ASSOC);
} |
Controllers :
Code:
$donnees_client = getInfoClient($id_client)
Donc ma variable $donnees contient la valeur de retour de ma fonction getInfoClient mentionné dans le model plus haut.
Ensuite j'envoie ces données à ma vue.
Vue :
Voici les informations du client :
Code:
echo $donnees; //Oui c'est un tableau je peux pas faire de echo mais c'est juste pour le principe de comprendre ^^
Donc mon problème vient de mon echo $donnees.
Dois-je faire :
Code:
1 2 3
| - echo $donnees
- echo htmlentities(stripslashes($donnees), ENT_QUOTES, "UTF-8"); // Déjà essayé mais du coup au lieu de m'afficher les caractères proprement ça me met &45f; etc.... ^^ hôtel devient h&;4gtel par exemple
- echo htmlspecialchar($donnees) |
Le fait de mettre addslashes lors de la recupération de mon formulaire est utile?
Je me pose toutes ces questions car par exemple, si dans mon formulaire un mec met dans l'input => '<script>alert('Cool je fais une alerte en plein milieu de ta page')</script>' au lieu d'écrire son nom et que moi je fais un echo de tout ça, je vais avoir une jolie alert dans ma page...
Voilà mon problème je ne sais pas trop où et à quel moment sécuriser tel ou tel choses.
Merci beaucoup :)