Forum nom de domaine  
  #1 (permalien)  
Ancien 02/10/2008, 19h54
gnark (Déconnecté)
Membre senior
 
Inscrit : mars 2008
Messages: 487
Chats: 1927
Par défaut Lutter contre les Spam ...

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=cache...lnk&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 :


    
// 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 !';  
 
 } 
Ensuite pour plus de sécurité on peut aussi interdire les PROXY :

    

 
// Fonction qui récupère les DNS  
 
 
function GetDns$IP )  
 
 {  
 
     
$Host     =     `host $IP`;  
 
     
$Host    =    endexplode' '$Host ) );  
 
     
$Host    =    substr$Host0strlen$Host ) - );  
 
     
$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  
 
     
&&amp$Dns        != 'NXDOMAIN'  
 
     
// On vérifie d'autres informations server  
 
     
&& empty( $_SERVER['HTTP_X_FORWARDED_FOR'] )  
 
     &
amp;& empty( $_SERVER['HTTP_VIA'] ) )  
 
 {  
 
     
// Affichage du formulaire  
 
 
}  
 
 
// Sinon on Interdit l'accès  
 
 
else  
 
 {  
 
     echo 
'Accès Interdit !';  
 
 } 
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 :

    

<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> 
Et cela dans la partie PHP lors du traitement des données :


 
// 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.

    

    $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  
 
                         
'&lt;\/?script ',  
 
                         
'&lt;a',  
 
                         
'&lt;img',  
 
                         
'\[url',  
 
                         
'\[img',  
 
                         
'@',  
 
                         
// etc.  
 
                             
);  
 
function 
ScanDonnee($Post$Interdit)  
 
 {  
 
     
$CountInterdit count($Interdit);  
 
for( 
$i 0$i &lt$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?lang...f117b99f36e758

qui est fort bien noté par ailleurs...

Dernière modification de gnark, 03/10/2008 à 21h31
Répondre en citant
  #2 (permalien)  
Ancien 02/10/2008, 23h30
Avatar de technique
technique (Déconnecté)
Admin Technique
 
Inscrit : mars 2008
Lieu: Point Place, Wisconsin
Messages: 993
Entrées dans le blog: 21
Chats: 990
Par défaut Re : Lutter contre les Spam ...

Bonsoir,

Je pense que tu peux éditer ton post pour utiliser la balise [php]

Ton source est surement intéressant mais il est illisible !
Répondre en citant
  #3 (permalien)  
Ancien 03/10/2008, 03h01
gnark (Déconnecté)
Membre senior
 
Inscrit : mars 2008
Messages: 487
Chats: 1927
Par défaut Re : Lutter contre les Spam ...

Bonsoir,
Effectivement ça va bien mieux ,(j'avais prevu d'y remettre une couche a la main quand le telephon a sonné pis j'ai zappé...),mais la c'est nickel avec cette cochonette de balise ...

Edit je crois qu'il faudra que je vire la partie capcha si le site ne reviens pas.. :/ ,ceci dit j'en ai utiliser un autre qui me semblait mieux (me rappelle pas du nom mais devrais retrouver....) et tout aussi simple a placer...

Dernière modification de gnark, 03/10/2008 à 03h20
Répondre en citant
  #4 (permalien)  
Ancien 03/10/2008, 08h02
Avatar de tomsa
tomsa (Déconnecté)
Administrateur
 
Inscrit : mars 2008
Messages: 3 551
Chats: 1975
Par défaut Re : Lutter contre les Spam ...

Merci Gnark ça ma me servir
Répondre en citant
  #5 (permalien)  
Ancien 03/10/2008, 08h42
dnway (Déconnecté)
Membre senior
 
Inscrit : mars 2008
Messages: 371
Chats: 9
Par défaut Re : Lutter contre les Spam ...

oui c'est interessant. Une motivation pour ressortir un certain formulaire jamais terminé ..
Répondre en citant
Répondre

Tags
contre, lutter, spam

Outils du sujet
Affichage du sujet Noter ce sujet
Noter ce sujet:

Règles des messages
Vous ne pouvez pas créer de sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas importer de fichiers joints
Vous ne pouvez pas modifier vos messages

BB codes : Activé
Smileys : Activé
BB code [IMG] : Activé
Code HTML : Désactivé
Trackbacks are Activé
Pingbacks are Activé
Refbacks are Activé


Sujets similaires
Sujet Auteur du sujet Forum Réponses Dernier message
CircleID : DomainName : MIT 2010 Spam Conference Starts Tomorrow… robot Agrégateur 0 24/03/2010 20h40
Namebay.com : Symantec : 90,4% des emails reçus sont du spam robot Agrégateur 0 29/05/2009 10h40
Nouveau mail, nouveau spam sur les domaines dymon Bouche à oreille 0 16/09/2008 08h36


Fuseau horaire : GMT +1. Il est 08h31.

Forum protégé par le Code de la propriété littéraire et artistique.