Chrooter apache
Matériel
Ajout disque dur
Ajout carte
Audit des disques durs
Gestion des peripheriques
Disquette d'installation
Ajout d'un scanner
Astuces
Ajout d'une imprimante
Réseau
Configuration reseau
Dns
Serveur cvs
Proxy squid 
Installation serveur ftp
Installation qmail 
Installation serveur courrier sous debian
Outil TCP/IP 
Le serveur samba
Connexion a distance securisee
Client/serveur vnc
Configurer apache
Dyndns
Installer un LAMP sous mandriva
Sécurité
Chiffrer un fichier/dossier
Securiser son poste
Mur pare feu pas a pas
Authentification ht-access
Surveillance de serveur CACTI
Snort
Snort-inline
Securiser Apache avec mod_security
Filtrage squid/squidguard/dansguardian
Auditer son site web
Sécuriser son linux
Installer un Lamp avec ssl
Contrer les scans de ports
Traitement anti-spam
Installer/Utiliser tripwire
Faire des sauvegardes incrémentales
Rsync
Nessus
Divers
Elisa, le multimédia facile
Utilisation de lilo
Les commandes Linux
Le multi-tache
Le crontab
Exploration de la configuration
Quotas
Messagerie
Installer une application
Debugger ses applications
Le format RPM
Mise a jour du noyau
Qemu
Tour d'horizon des principaux p2p
Récupération du système
Bips d'un pc
Astuces windows
Table Ascii
Lamerland
Conversion de fichiers musicaux
Compiler ses rpms
Graver en ligne de commande
Graver un fichier avi pour un dvd de salon
Récupérer des fichiers effacés
Liens
hakin9
Secureroot.com
Hackerthreads.org
Defcon
Hackerlounge
Les derniers exploits
Tous les codes sources
Securite sous Linux
Les logiciels libres quotidiens
Ezine divers
Madchat
Textes divers
Archives
 
Traductions LG
Toutes les traductions
Traductions Phrack
Toutes les traductions

Il y a actuellement 8 visiteurs connectés sur le site !

Google

Mise en place d'un captcha dans un formulaire
Mise en place d'un captcha dans un formulaire

 

Introduction
Installation
Traitement des données
Avec wordpress
Vérification des champs du formulaire

 

Introduction:

Pourquoi implémenter un captcha dans un formulaire ? Parce que le web est plein de robots malveillants ou tout simplement de spammeurs qui vont utiliser votre formulaire pour soumettre des informations, parfois de manière automatisée.
Le captcha demande à l'utilisateur de saisir des lettres et des chiffres, ce qui permet de faire un certain tri
Cette technique n'est pas entièrement fiable, puisqu'il est possible de décrypter un grand nombre de captcha avec des programmes spécifiquement adaptés à un type de captcha.

 

Installation

Nous allons commencer par mettre en place un formulaire simple, qui demande à l'utilisateur quelques renseignements basiques, le tout accompagné d'un captcha, l'élaboration du captcha se faisant dans le fichier inclus captcha.php, que nous verrons plus avant.
Dans le script de traitement du formulaire, nous apprendrons à refuser toute demande, si un des champs n'a pas été rempli, et si le captcha n'a pas été recopié correctement.
Voici le formulaire :



<?php
session_start();
require('captcha.php');
?>

<html>
<body>
<span style="color: #000000;"><strong>Formulaire de contact d'exemple à l'usage de Linux pour les nuls </strong></span>

<table>
<tbody>
<tr>
<td><span style="color: #000000;">Contactez-nous en remplissant ce formulaire
<table border="0"><form action="http://www.linux-pour-lesnuls.com/reponse.php" enctype="multipart/form-data" method="post">
<tbody>
<tr>
<td width="231" align="center">Entrez votre nom</td>
<td width="317" align="center"><input name="nom" type="text" /></td>
</tr>
<tr>
<td align="center">Entrez votre prénom</td>
<td align="center"><input name="prenom" type="text" /><td>
</tr>
<tr>
<td align="center">Entrez votre adresse</td>
<td align="center"><input name="adresse" type="text" /></td>
</tr>
<tr>
<td align="center">Entrez votre email</td>
<td align="center"><input name="email" type="text" /></td>
</tr>
<tr>
<td align="center">De quel sexe êtes vous ?</td>
<td align="center"><input name="sexe" type="radio" value="Homme" /> Homme
<input name="sexe" type="radio" value="Femme" /> Femme</td>
</tr>
<tr>
<td align="center">Entrez votre pays d'origine</td>
<td align="center"><select name="pays"> <option value="France">France</option> <option value="Allemagne">Allemagne</option> <option value="Angleterre">Angleterre</option> </select></td>
</tr>
<tr><td>
<label for="captcha">Recopiez le mot : "<?php echo captcha(); ?>"</label>
<input type="text" name="captcha" id="captcha" /><br />
</td></tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Envoyer" /></td>
</tr>
</table>
</body>
</html>
</td>></table>

On aura compris que le traitement des données est confié à un script reponse.php, que l'on va à présent examiner.

Traitement des données

Le traitement va se faire en plusieurs étapes:
Tout d'abord, on récupère les données saisies par l'utilisateur, ensuite on compare le captcha entré avec celui de notre session (ne pas oublier d'implémenter la session et de la fermer). S'il manque quelque chose, un message d'erreur est envoyé, sinon, on inclue un fichier info.php, qui va se charger d'acheminer par email les informations saisies
Voici le script de traitement reponse.php



<?php
session_start(); // ne pas oublier d'ouvrir la session pour comparer avec le captcha saisi
$nom = $_POST['nom'] ;
$prenom = $_POST['prenom'] ;
$adresse = $_POST['adresse'] ;
$email = $_POST['email'] ;
$sexe = $_POST['sexe'] ;
$pays = $_POST['pays'] ;
////récupération des informations saisies
if(!empty($_POST['captcha']) && !empty($_POST['nom']) && !empty($_POST['prenom']) &&
!empty($_POST['adresse']) && !empty($_POST['email']) && !empty($_POST['sexe']) &&
!empty($_POST['pays']))
////examiner si les champs sont bien remplis
{
if(isset($_SESSION['captcha']) && $_POST['captcha'] == $_SESSION['captcha'])
////comparer le captcha saisi avec celui de notre session
echo 'Le captcha est bon, votre nom est '.$_POST['nom'], $_POST['prenom'], $_POST['adresse'], $_POST['email'],
$_POST['sexe'], $_POST['pays'], include ("info.php") ;
////inclusion du fichier envoyant nos données par email
else
echo 'La captcha n\'est pas bon.';
session_destroy();
}
else
echo 'Il faut remplir tout les champs.';

?>

On va à présent écrire le fichier captcha.php, fichier contenant l'élaboration du captcha, et qu'on inclut de la sorte
require('captcha.php');
En début du formulaire



<?php
function motListe()
{
$liste = array('linux', 'musique', 'informatique');
return $liste[array_rand($liste)];
}

function captcha()
{
$mot = motListe();
$_SESSION['captcha'] = $mot;
return $mot;
}
?>

Voici maintenant le script qui va permettre d'envoyer les informations reçues par courrier, seulement si TOUS les champs ont été remplis et si le captcha est correct.
On pourrait et on devrait en profiter pour faire une vérification plus poussée sur les informations reçues, comme par exemple un traitement par expression régulières des champs email ou nom/prénom.
Ceci fait donc l'objet d'un paragraphe ci-dessous
Voici le fichier info.php basique :



<?php
if(isset($_SESSION['captcha']) && $_POST['captcha'] == $_SESSION['captcha'])
echo( "Votre nom: ".$nom."
\n" ) ;
echo( "Votre prénom: ".$prenom."
\n" ) ;
echo( "Votre adresse: ".$adresse."
\n" ) ;
echo( "Votre email: ".$email."
\n" ) ;
echo( "Votre sexe: ".$sexe."
\n" ) ;
echo( "Votre pays d'origine: ".$pays."
\n" ) ;
$TO = "user@nomdedomaine.net";
$h = "From: " . $TO;
$message = "";
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
mail($TO, $subject, $message, $h);
?>

 

Avec wordpress

Je souhaitais intégrer un captcha dans un formulaire que j'ai publié sur mon blog, et on m'a dit de ne pas m'en faire, cryptographp est fait pour moi, il suffit d'intégrer le plugin Cryptographp et çà roule
Hélas pas pour moi, j'ai eu beau télécharger et activer le plugin, ajouter <?php display_cryptographp(); ?>, dans mon formulaire, les dieux n'étaient pas avec moi
J'ai donc implémenté la solution exposée plus avant, mais il restait un petit problème, wordpress ne comprend pas le php nativement, il faut lui rajouter un plugin
Execphp
Pour l’installer, dézippez le contenu du téléchargement puis uploadez le dossier wp_contents/plugins.
Il vous suffira ensuite de vous rendre dans la section plugins ou extensions de votre administration wordpress pour l’activer.
Une fois le plugin installé, il reste à se rendre dans la rubrique user/profile de l'interface d'administration de votre blog et de cocher "Disable WYSIWYG Conversion", afin qu'il n'interfère pas dans votre code php. Ensuite, la voie est libre pour intégrer du code php dans vos articles et vos pages.

 

Vérification des champs du formulaire

Il s'agit d'éviter que l'utilisateur rentre n'importe quoi à la place d'une adresse email, on va donc appeler à notre secours les expressions régulières.
Voici une fonction qui vérifie si une chaine de caractères est seulement une adresse e mail valide.



function VerifierAdresseMail($adresse)
{
$Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';
if(preg_match($Syntaxe,$adresse))
return true;
else
return false;
}

Exemple d'utilisation:
Après avoir récupéré le champ "adresse" d'un formulaire :
$adresse=htmlentities($_POST['adresse']);
if(VerifierAdresseMail($adresse))
echo '<p>Votre adresse est valide.<p>';
else
echo '<p>Votre adresse e-mail n'est pas valide.<p>';

Cette astuce a été publiée par Jeff
Pour un numéro de téléphone, c'est encore plus simple
if(preg_match('`[0-9]{10}`',$tel));echo "C'est bon";
Sources de l'article

 

Blog
Le blog
La radio
La Radio
Boutique
La boutique du Geek
Php/Mysql
Formulaire en php
Administrer un serveur Mysql
Session en php
Gerer ses bases mysql
Les bases php
Securiser ses scripts PHP
Controler ses programmes avec RATS
Convertir une base sql en utf8
Astuces php
Le fichier php.ini
Programmation
Python rapide
Tutorial Python
Tutorial Perl
Tutorial Perl complet
Tutoriel ruby
Tutoriel C
Introduction à gawk
Filtres et utilitaires
Find
Programmation Shell
Ecriture de scripts bash
Expressions regulieres
Vi
Introduction a Javascript
Compiler avec gcc
Astuces en Bash
Cracking
Tutoriel Assembleur
Guide du cracking pour débutant
Assembleur
Manual Unpacking
Techniques de Protection
Différentes failles Web
Arp spoofing dans un réseau switché
Les intrusions
Les attaques externes
Defacage
Defacage complet
Buffer overflow
Netcat
Injection sql
Injection sql(suite)
John the Ripper
Spoofer un email
Utiliser google
La faille system
Usurper une identité
Le rooting
Shellcode sous Unix
La faille race condition
La faille xss
La faille xss (2)
Attaques sur un routeur
P2P
Azureus pas-a-pas
News
Lire les news de Linux-pour-lesnuls.com au format RSS
Distros
Gestion des paquets debian
101 commandes debian
Jeu
Webtarot
Graphisme
Effet neon dans GIMP
Effet vapeur dans GIMP
Cours fonctionnalités de GIMP
Redimentionner une image avec GIMP
Redimentionner une photo pour en faire un cadre avec gimp
Morphing avec gimp
Détourer avec gimp
Réduire le poids d'une image avec gimp
Caricature avec gimp
Humour
Ensemble
Divers