par
ynx » 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é

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