Question

Je dispose actuellement d'un système de validation côté serveur assez robuste, mais je souhaite des informations en retour afin de m'assurer d'avoir couvert tous les angles. Voici un bref aperçu de ce que je fais en ce moment:

  • Assurez-vous que l'entrée n'est pas vide ou qu'elle est trop longue

  • Échappe les chaînes de requête pour empêcher l'injection SQL

  • Utilisation d'expressions régulières pour rejeter les caractères non valides (cela dépend de ce qui est soumis)

  • Encodage de certaines balises HTML, comme < script > (toutes les balises sont codées lorsqu'elles sont stockées dans une base de données, certaines étant décodées lorsque le rendu dans la page est demandé)

Y a-t-il quelque chose qui me manque? Les échantillons de code ou les expressions régulières sont les bienvenus.

Était-ce utile?

La solution

Vous ne devriez pas avoir besoin de & "Escape &"; les chaînes de requête pour empêcher l'injection SQL - vous devriez plutôt utiliser des instructions préparées.

Idéalement, votre filtrage des entrées aura lieu avant tout autre traitement. Vous savez donc qu'il sera toujours utilisé. Sinon, il vous suffit de manquer un endroit pour être vulnérable à un problème.

N'oubliez pas de coder les entités HTML en sortie pour éviter les attaques XSS.

Autres conseils

Vous devez encoder toutes les balises html, pas seulement celles qui ne le sont pas. C'est un débat brûlant, mais en gros, il y aura toujours une combinaison HTML non valide que vous oublierez de manipuler correctement (balises imbriquées, balises incompatibles que certains navigateurs interprètent «correctement», etc.). Donc, à mon avis, l'option la plus sûre consiste à tout stocker en tant qu'htmlentities puis à imprimer, en sortie, une arborescence validée HTML-safe-subset (en tant qu'entités) à partir du contenu.

Exécutez toutes les validations côté serveur dans une bibliothèque dédiée à la tâche afin que les améliorations apportées dans un domaine affectent l'ensemble de votre application.

Inclut en outre les travaux contre les attaques connues, telles que la traversée de répertoires et les tentatives d'accès au shell.

Cette question / réponse contient quelques bonnes réponses que vous recherchez.
( orienté PHP, mais là encore vous n’avez pas spécifié de langage / plate-forme et certaines d’entre elles s’appliquent au-delà du monde php ):

  

Quelle est la meilleure méthode de nettoyage des entrées utilisateur avec PHP?

Vous pouvez consulter la extension du filtre pour le filtrage des données. Cela ne garantira pas votre étanchéité totale, mais personnellement, je me sens beaucoup mieux de l'utiliser car ce code a beaucoup de globes oculaires qui l'examinent.

En outre, considérez les déclarations préparées appuyées. Échapper aux données de vos requêtes SQL appartient au passé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top