Pour l'amour d'Odin, ne désinfectez pas les entrées. N'ayez pas peur que les utilisateurs entrent ce qu'ils veulent dans vos formulaires.
L'entrée utilisateur n'est pas intrinsèquement dangereuse. La réponse acceptée mène à ces types d'interfaces web comme celle de ma banque, où M. O'Reilly ne peut pas ouvrir un compte, parce qu'il a un caractère illégal à son nom. Ce qui est dangereux, c'est toujours comment vous utilisez l'entrée de l'utilisateur.
La meilleure façon d'éviter les injections SQL est d'utiliser des instructions préparées. Si votre couche d'abstraction de base de données ne vous permet pas de les utiliser, utilisez les fonctions d'échappement correctes rigoureusement (myslq_escape et al). La manière correcte d'empêcher les attaques XSS n'est jamais quelque chose comme striptags(). Échapper à tout - en PHP, quelque chose comme htmlentities() est ce que vous cherchez, mais cela dépend de si vous publiez la chaîne dans le texte HTML, un attribut HTML ou Javascript, etc. Utilisez le bon outil pour le bon contexte. Et ne JAMAIS simplement imprimer l'entrée de l'utilisateur directement sur la page. Enfin, jetez un oeil aux 10 principales vulnérabilités des applications Web, et faites le bien pour les prévenir. http://www.applicure.com/blog/owasp-top-10-2010
Vulnérable à quoi exactement? Le piratage? Cross-site scripting? Injection SQL? – wcm
Scrutation de sites croisés et injection SQL. Désolé, je pensais que je l'ai mentionné dans la question (je me suis distrait et quand je suis revenu, j'ai appuyé sur submit sans vérifier ce que j'avais écrit). – Iwasakabukiman
Ce serait génial si vous pouviez éditer la vraie question et mettre ce genre de choses là-dedans. Pouvez-vous également clarifier ce que vous entendez par "entrée"? Ma première réaction était que vous vouliez dire quel type de contrôle de formulaire était le moins vulnérable, auquel cas je devrais dire le bouton radio! –