- Discussion Auteur
- #1
Bon deja qu'on se fait ch... a creer des sites autant se debarrasser au plus tot des emmerdeurs ne serait ce parfois que pour eviter les soucis juridiques...
... en cherchant un capcha pour un formulaire suis tombé sur cette petite totale...
Probleme le site semble plus accessible directement j'ai donc copié-collé du cache google
http://209.85.135.104/search?q=cach...ment-contre-le-spam/&hl=fr&ct=clnk&cd=1&gl=fr
Johnstyle, le Blog Web 2.0
Bonjour,
Bon nombre de webmasters cherchent toujours un moyen de contrer efficacement les spammeurs dans les formulaires (contact, commentaires, soumissions, etc.)
J’ai été confronté à ce problème récemment et j’ai donc mis au points quelques astuces qui jusqu’à présent marchent très bien
1 - Sécuriser l’accès de la page.
Le premier point est d’interdire l’accès extérieur de la page du formulaire. C’est très important car sans cela des robots peuvent accéder à votre formulaire et envoyer des spams par centaines !
Un petit morceau de code PHP qui vérifie le référent fera l’affaire :
Ensuite pour plus de sécurité on peut aussi interdire les PROXY :
Donc pour récapituler nous venons d’interdire l’accès à la page du formulaire aux requêtes extérieur et aux internautes se cachant derrière un Proxy.
Maintenant, on peut s’attaquer à la sécurité du formulaire.
2 - Sécuriser le formulaire
Rien de mieux qu’une image captcha où l’internaute dois tout simplement retaper un code affiché sur une image.
Il existe pas mal de script de captcha mais le meilleur d’après moi est celui-ci: Script Captcha
Il est simple, léger, paramétrable et en plus on peut rafraichir l’image sans recharger la page.
Désolé mais je ne me rappel plus de l’auteur, j’avais trouvé ce code il y a pas mal de temps déjà …
Une fois déziper il vous suffit d’envoyer le contenu à la racine de votre site.
Ensuite dans votre formulaire vous rajoutez ceci :
Et cela dans la partie PHP lors du traitement des données :
Maintenant le formulaire est sécurisé, seulement malgré tout ce que l’on viens de faire les spammeur peuvent encore passer ! Donc nous allons vérifier les données.
3 - Traitement des Données
Cette partie est assez contraignante car il faudra rajouter au fur et à mesure qu’un spammeur réussi à ce glisser les mots clés et expression interdites. Mais je l’ai optimisé au maximum
Nous allons donc créer un tableau (ou une table SQL) contenant des expressions et mots clés jugés interdit.
Voilà donc normalement avec tout cela il est pratiquement impossible d’avoir des spams sur son formulaire
Et comme je le disais plus haut il suffit juste de rajouté des mots interdit dans la liste si par malheur un spammeur à réussi à passé.
Voici un exemple en ligne (essayez d’accèder au formulaire sans passer par ce lien ^^)
Et l’archive de cet exemple : securiser-formulaire_(www.johnstyle.fr)
Cet article a été publié le Jeudi 11 octobre 2007 à 23:36 et est classé dans la catégorie Webmasters.
bon perso j'ai utiliser un autre capcha =>"cryptograph"
http://www.captcha.fr/index.php?langue=fr&page=34&PHPSESSID=a9c01ccba44d39047ef117b99f36e758
qui est fort bien noté par ailleurs...
... en cherchant un capcha pour un formulaire suis tombé sur cette petite totale...
Probleme le site semble plus accessible directement j'ai donc copié-collé du cache google
http://209.85.135.104/search?q=cach...ment-contre-le-spam/&hl=fr&ct=clnk&cd=1&gl=fr
Johnstyle, le Blog Web 2.0
Bonjour,
Bon nombre de webmasters cherchent toujours un moyen de contrer efficacement les spammeurs dans les formulaires (contact, commentaires, soumissions, etc.)
J’ai été confronté à ce problème récemment et j’ai donc mis au points quelques astuces qui jusqu’à présent marchent très bien
1 - Sécuriser l’accès de la page.
Le premier point est d’interdire l’accès extérieur de la page du formulaire. C’est très important car sans cela des robots peuvent accéder à votre formulaire et envoyer des spams par centaines !
Un petit morceau de code PHP qui vérifie le référent fera l’affaire :
PHP:
// On récupère le Référent
$Referer = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : 'Aucun';
// Formatage du référent
$Referer = preg_replace( "/http:\/\//","", $Referer );
$Referer = preg_replace( "/\/.*/", "", $Referer );
// On vérifie le domaine
if( $Referer == 'www.johnstyle.fr' || $Referer == 'johnstyle.fr' )
{
// Affichage du formulaire
}
// Sinon on Interdit l'accès
else
{
echo 'Accès Interdit !';
}
PHP:
// Fonction qui récupère les DNS
function GetDns( $IP )
{
$Host = `host $IP`;
$Host = end( explode( ' ', $Host ) );
$Host = substr( $Host, 0, strlen( $Host ) - 2 );
$Value = split( "\(", $Host ); if( $Value[1] )
{
return $IP." (".$Value[1].")";
}
else
{
return $Host;
}
}
// On récupère le Référent
$Referer = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : 'Aucun';
// On récupère l'Adresse IP
$AdresseIp = isset( $_SERVER['REMOTE_ADDR'] ) ? $_SERVER['REMOTE_ADDR'] : 'Aucun';
// On récupère l'Adresse IP
$Dns = GetDns( $AdresseIp );
// Formatage du référent
$Referer = preg_replace( "/http:\/\//","", $Referer );
$Referer = preg_replace( "/\/.*/", "", $Referer );
// On vérifie les Données
if(
// On vérifie le Référent
($Referer == 'www.johnstyle.fr'
|| $Referer == 'johnstyle.fr')
// On vérifie les DNS
&& $Dns != 'NXDOMAIN'
// On vérifie d'autres informations server
&& empty( $_SERVER['HTTP_X_FORWARDED_FOR'] )
&& empty( $_SERVER['HTTP_VIA'] ) )
{
// Affichage du formulaire
}
// Sinon on Interdit l'accès
else
{
echo 'Accès Interdit !';
}
Maintenant, on peut s’attaquer à la sécurité du formulaire.
2 - Sécuriser le formulaire
Rien de mieux qu’une image captcha où l’internaute dois tout simplement retaper un code affiché sur une image.
Il existe pas mal de script de captcha mais le meilleur d’après moi est celui-ci: Script Captcha
Il est simple, léger, paramétrable et en plus on peut rafraichir l’image sans recharger la page.
Désolé mais je ne me rappel plus de l’auteur, j’avais trouvé ce code il y a pas mal de temps déjà …
Une fois déziper il vous suffit d’envoyer le contenu à la racine de votre site.
Ensuite dans votre formulaire vous rajoutez ceci :
PHP:
<img src="image.php" alt="Code de vérification" id="captcha" />
<a onclick="javascript:document.images.captcha.src='image.php?id='+Math.round(Math.random(0)*1000)+1" style="cursor: pointer">
<img src="refresh.gif" height="21" width="20" /> Rafraichir l'image
</a>
PHP:
// On démarre une session
// A Mettre dès la première ligne de votre fichier !
session_start(); // On récupère la variable du Captcha
$PostCaptcha = isset($_POST['captcha']) ? $_POST['captcha'] : '';;
if( md5( $PostCaptcha ) != $_SESSION['valeur_image'] )
{
// On affiche une erreur
echo 'Le code de vérification est faux !<a href="javascript:history.back()">Retour</a>';
// On arrête l'exécution du script
exit;
}
Maintenant le formulaire est sécurisé, seulement malgré tout ce que l’on viens de faire les spammeur peuvent encore passer ! Donc nous allons vérifier les données.
3 - Traitement des Données
Cette partie est assez contraignante car il faudra rajouter au fur et à mesure qu’un spammeur réussi à ce glisser les mots clés et expression interdites. Mais je l’ai optimisé au maximum
Nous allons donc créer un tableau (ou une table SQL) contenant des expressions et mots clés jugés interdit.
PHP:
$PostPseudo = isset( $_POST['pseudo'] ) ? $_POST['pseudo'] : '';
$PostCommentaire = isset( $_POST['commentaire'] ) ? $_POST['commentaire'] : '';
$MotsInterdits = array(
// Mots ou expression
'viagra',
'phentermine',
'valium',
// Mais aussi des morceaux de code
'<\/?script ',
'<a',
'<img',
'\[url',
'\[img',
'@',
// etc.
);
function ScanDonnee($Post, $Interdit)
{
$CountInterdit = count($Interdit);
for( $i = 0; $i < $CountInterdit; $i++ )
{
if( preg_match( "/$Interdit[$i]/", $Post) )
{
// On affiche une erreur
echo 'Il est strictement Interdit de Spammer !';
// On arrête l'exécution du script
exit;
}
}
}
ScanDonnee( $PostPseudo, $MotsInterdits);
ScanDonnee( $PostCommentaire, $MotsInterdits);
// etc.
Voilà donc normalement avec tout cela il est pratiquement impossible d’avoir des spams sur son formulaire
Et comme je le disais plus haut il suffit juste de rajouté des mots interdit dans la liste si par malheur un spammeur à réussi à passé.
Voici un exemple en ligne (essayez d’accèder au formulaire sans passer par ce lien ^^)
Et l’archive de cet exemple : securiser-formulaire_(www.johnstyle.fr)
Cet article a été publié le Jeudi 11 octobre 2007 à 23:36 et est classé dans la catégorie Webmasters.
bon perso j'ai utiliser un autre capcha =>"cryptograph"
http://www.captcha.fr/index.php?langue=fr&page=34&PHPSESSID=a9c01ccba44d39047ef117b99f36e758
qui est fort bien noté par ailleurs...
Dernière édition: