[RESOLU] Empêcher l'insertion de balise html, php, javascript

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Empêcher l'insertion de balise html, php, javascript

Re: Empêcher l'insertion de balise html, php, javascript

par nico44530 » 30 sept. 2014, 19:56

C'est résolu, j'utilise preg_match pour chaque champs qui n'acceptent pas de caractères spéciaux : nom, prénom, pseudo (le mot de passe étant crypté en SHA1, accepte tous les caractères spéciaux)

Re: Empêcher l'insertion de balise html, php, javascript

par ynx » 30 sept. 2014, 16:29

Salut,

Je précise que j'utilise PDO et des requêtes préparées, mais ça change rien au problème.

C'est normal puisque ce n'est pas un problème. On peut enregistrer des balises html en base de données sans aucun soucis (par exemple pour les messages de ce forum).
L'important est de bien utiliser htmlentities pour l'affichage afin que les balises html soit remplacées par les entités correspondantes : tu vois <monprenom> mais si tu regarde le code source de la page tu devrais voir <monprenom>
Ainsi tu es protégé contre les failles XSS et tu peux accepter tous les caractères possibles.
htmlentities avant l'insertion en bdd -> mauvaise pratique
htmlentities lors de l'affichage dans un document html -> bonne pratique

Si tu souhaites tout de même interdire certains caractères pour le pseudo, tu peux te tourner vers la fonction filter_var avec le filtre correspondant à tes besoins ou utiliser une expression régulière.

Bonne journée

Empêcher l'insertion de balise html, php, javascript

par nico44530 » 30 sept. 2014, 13:36

Bonjour,

J'ai testé l'inscription en ajoutant un prénom avec des chevrons : <monprenom>
Et j'aimerais qu'à l'insertion, ces balises soient supprimées, pareils pour les caractères spéciaux = + / * - ? ! ) ( # { } [ ] & % $ ; : , \ /
Je précise que j'utilise PDO et des requêtes préparées, mais ça change rien au problème.
je mets htmlspecialchars à l'affichage et j'ai <monprenom> à l'affichage avec les chevrons :?

Merci d'avance