[RESOLU] probleme preg_replace et accent

Mammouth du PHP | 558 Messages

29 juin 2022, 16:30

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 ";
?>

ynx
Mammouth du PHP | 586 Messages

30 juin 2022, 11:23

Bonjour,

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

Mammouth du PHP | 558 Messages

30 juin 2022, 12:18

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.

ynx
Mammouth du PHP | 586 Messages

30 juin 2022, 12:41

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é ;)

Mammouth du PHP | 558 Messages

30 juin 2022, 12:55

je ne sait pas trop quoi mettre pour le coup.
c'est pour l'envoie de mail.
tu pense que le htmlentities suffirais?

ynx
Mammouth du PHP | 586 Messages

30 juin 2022, 13:27

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.

Mammouth du PHP | 558 Messages

01 juil. 2022, 09:28

ok merci, pour ses infos j'étais en train de me prendre la tête pour pas grand chose.