Page 1 sur 1

probleme preg_replace et accent

Posté : 29 juin 2022, 16:30
par hakazizi
Bonjour,
je travaille actuellement sur la sécurité de mon site.
je n'arrive pas a faire passer les accent voici mon code:
pour info cela fait 2 jours que j'essaie tout et n'importe quoi.
merci pour votre aide,
<?php
if(strlen($_POST['nom'])===0){echo"le champs nom est vide<br/>";}else{
$verifnom=preg_replace("/[^a-zA-Z \- &eacute; &egrave; &ccedil; &agrave; &acirc; &ecirc; &ucirc; &icirc; &auml; &euml; &iuml; &ouml; &uuml; &Acirc; &Ecirc; &Icirc; &Ocirc; &Ucirc; &Auml; &Euml; &Iuml; &Ouml; &Uuml; &ugrave; &ugrave;]/",'',htmlentities($_POST['nom']));
$nom=htmlentities($_POST['nom']);
if($verifnom!=$_POST['nom']){echo"erreur<br/>"; }}
echo"$verifnom<br/>$nom ";
?>

Re: probleme preg_replace et accent

Posté : 30 juin 2022, 11:23
par ynx
Bonjour,

Quel est le but de ce code en terme de sécurité ?
Pourrais-tu nous expliquer ce que tu cherches à faire ?

Re: probleme preg_replace et accent

Posté : 30 juin 2022, 12:18
par hakazizi
bonjour,
le but est d'évité les caractère dit dangereux et ne laisser passer que les caractère utile merci.

désolé c'est vrai que vous n'êtes pas dans ma tête lol.

Re: probleme preg_replace et accent

Posté : 30 juin 2022, 12:41
par ynx
Les caractères "dangereux" vont dépendre du contexte d'utilisation.

Si tu veux utiliser tes données dans une requête sql, l'idéal est d'utiliser une requête préparée avec des marqueurs/paramètres. Tant que tu utilises correctement les requêtes préparées (avec des marqueurs/paramètres pour y insérer les données, sans concaténation), aucun caractère ne sera dangereux pour les injections sql.
Si tu veux afficher tes données dans un document html, tu peux simplement utiliser htmlspecialchars ou htmlentities lors de l'affichage, aucun caractère ne sera dangereux pour les failles XSS.

En théorie tu peux donc autoriser tous les caractères dans tes données tant que tu les protèges correctement selon le contexte d'utilisation (comme pour les messages de ce forum par exemple).
Tu peux restreindre certains caractères dans tes données si tu le souhaites (avec les regex ou les filtres via la fonction filter_var), mais il s'agit alors de règles métiers dépendant de ton application et pas de la sécurité ;)

Re: probleme preg_replace et accent

Posté : 30 juin 2022, 12:55
par hakazizi
je ne sait pas trop quoi mettre pour le coup.
c'est pour l'envoie de mail.
tu pense que le htmlentities suffirais?

Re: probleme preg_replace et accent

Posté : 30 juin 2022, 13:27
par ynx
Si le mail est au format html, dans ce cas oui htmlentities est suffisant lors de l'affichage des données dans le contenu du mail.

Re: probleme preg_replace et accent

Posté : 01 juil. 2022, 09:28
par hakazizi
ok merci, pour ses infos j'étais en train de me prendre la tête pour pas grand chose.