Comment sécuriser un minimum un formulaire

Première partie

On trouve malheureusement trop souvent des formulaires non protégés sur le NET et beaucoup de personnes qui reçoivent d’énorme quantité de spam.
Nous verrons par exemple ici comment protéger un minimum un formulaire de contact, vous pourrez bien évidemment appliquer les technique pour n’importe quel type de formulaire.
Nous allons vous expliquer 4 techniques :

– Mise en place d’un leurre et d’un captcha

– Mise en place d’un anti-flood

– Vérification des données entrées

– Mise en place d’un compteur

Ces techniques ne sont pas infaillibles et  un bon hacker aura de toute façon vite fait de les contourner, car malheureusement, il n’existe aucune solution fiable à 100%
Voici un formulaire de base qui sera traité en PHP, nous ne ferons pas de mise en forme avec des feuilles de styles car ce n’est pas le but.

Le code est simple, c’est celui utilisé sur la plupart des sites persos :

<form method= «POST» action= «verifcontact.php» >

<p>E-mail :<input type=«text» name= «mail» size=25></p><br />

<p>Sujet :<input type=«text» name= «sujet» size=25></p><br />

<p>Votre message :<textarea rows= »8″ name= «message»></textarea></p><br />

<p><input type= «submit» value= «Envoyer»></p>

</form>

Comme vous pouvez le constater le code n’est pas propre du tout, mais ça ne nous intéresse pas ici.

On peut également voir qu’il y a 3 champs qui permettent de rentrée des données : mail, sujet et message.

Voici le genre de formulaire que vous trouverez souvent et qui peux être modifié déjà à ce niveau.

Nous allons tout de suite apporter des modifs :

PARTIE HTML

Bien entendu, le javascript est juste un plus car en le désactivant via son navigateur, le code est inopérant, mais c’est juste un plus…

Donc déjà, on limite la saisie dans les champs avec maxlength (50 caractères seulement), et on va procéder à contrôle en javascript à la validation du formulaire.

Nous avons également rajouté un champ caché <input type=«hidden» name=«email» value=«» />, Il s’agit là certainement de la meilleur façon de leurrer un robot spammeur !

En effet le champ étant caché, si celui-ci est remplie (quand on fera la vérif en php), c’est tout simplement un bot qui l’a remplie, donc on n’enverra pas le mail. Il est important aussi de lui trouver un nom parlant, ici email car les robots ne sont pas futés et commence par chercher tous les champs cialis without prescription avec des noms contenant « mail »…Cette technique filtre plus de 90% des robots spammeurs !

Voici maintenant le code JavaScript :

PARTIE JAVASCRIPT

Pour le champ mail, on vérifie que c’est bien une adresse mail qui a été saisie. Si c’est vide la forme ne sera pas respectée et le résultat ne sera également pas accepté.

Pour le champ sujet, on vérifie qu’il y ait bien quelque chose de mis et qu’il y ait plus de 4 caractères.

Pour le champ message, on vérifie qu’il y ait bien quelque chose de mis et qu’il y ait plus de 10 caractères.

On désactive le bouton qui permet d’envoyer le message une fois celui-ci cliqué, ainsi on évite les clics multiples (flood).

 

Passons maintenant à la vérifications des données et aux contrôles en PHP :

PARTIE PHP


Rien de compliqué :
– On commence donc par vérifier si le champ caché du formulaire est rempli, si c’est le cas on n’envoie pas le mail.

– On met en place une session qui permet avec un compteur de limiter le nombre de poste dans un intervalle donné.

– On vérifié les données rentrées

(Télécharger ici le Formulaire-Partie1)

Voilà pour cette première partie, dans la suivante, nous verrons comment récupérer proprement les donnée via POST, nous rajouterons un captcha, un filtre contre les mots grossiers et nous verrons le code de la page « Votre page d’envoie de mail.php», vous pourrez également télécharger le dossier complet de ce mini tuto !

 

2 commentaires
  1. Bonjour, je ne trouve pas le lien de la deuxième partie sur votre site.

    Merci,

    • Bonsoir Berrenger, la deuxième partie n’est pas encore publiée. Nous y travaillons; merci pour votre patience!

Laisser une réponse