securiser un formulaire avec mot a retaper

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par jooki, 29 Juillet 2008.

  1. jooki
    jooki Nouveau WRInaute
    Inscrit:
    22 Juillet 2008
    Messages:
    4
    J'aime reçus:
    0
    Bonjour
    j'ai un formulaire que j'aurais voulu sécuriser avec un mot a taper antispam et je ne c'est pas quoi mettre dans le code pour qu'il reconnaisse le mot antispam, ca fait plusieurs heures que je trifouille le code mais sans résultat, en plus j'aurais voulu mettre des stripslashes et htmlspecialchars.

    Si une bonne âme pouvait me mettre dans le code ce qu'il faut pour le mot antispam et les stripslashes, htmlspecialchars et m'expliquer car la je seche !



    Code:
     <?
            /* configuration du script d'envoi */
            $nom_du_site = "monsite" ; // utilisé lors de l'envoi de la copie du message
            $to = "monmail" ; // obligatoire : email du destinataire - contact du site
            $copie_a_expediteur = 0 ; // mettre 1 si on veut envoyer une copie du message à l'expéditeur / visiteur du site
            $copie_au_webmaster = 1 ; // mettre 1 si on veut faire un Cc au webmaster du site - souvent utile pour débugger au départ ou si on veut être au courant des messages qui transitent via le site
            $mail_webmaster = "monmail" ; // mettre adresse du webmaster pour envoi du Cc
            /* fin de la config */
    
            // tests de sécurité si le formulaire a été envoyé
            if (isset($_POST["send"]) ){
                $secure = true ;
                $from = $_POST["from"] ;
                $sujet=mb_encode_mimeheader($_POST["sujet"]) ;
    			$antispam = $_POST["antispam"] ;
                //tests des adresses mail expéditeur, destinataire et webmaster
                if(!preg_match('/^[A-Z0-9._-]+@[A-Z0-9][A-Z0-9.-]{0,61}[A-Z0-9]\.[A-Z.]{2,6}$/i',$from)) {
                    echo('Adresse de courriel Invalide <br />') ;
                    $secure = false ;
                }
                if(!preg_match('/^[A-Z0-9._-]+@[A-Z0-9][A-Z0-9.-]{0,61}[A-Z0-9]\.[A-Z.]{2,6}$/i',$mail_webmaster)) {
                    echo('Adresse de courriel Invalide <br />');
                    $secure = false ;
                }
                if(!preg_match('/^[A-Z0-9._-]+@[A-Z0-9][A-Z0-9.-]{0,61}[A-Z0-9]\.[A-Z.]{2,6}$/i',$to)) {
                    echo('Adresse de courriel Invalide <br />');
                    $secure = false ;
                }
    			}
    			if ($antispam == 'antispam') 
    			{
                // test des saisies obligatoires
                if ( !$from ||!$sujet ||!$antispam ||!$txtmsg ) {
                    echo('Mail + sujet + \'antispam\' et message obligatoires <br />');
                    $secure = false ;
                }
            }
    
            if ( !$secure ){
            // Si le formulaire n'a pas été envoyé ou n'est pas secure, on l'affiche
            ?>
    
            <form action="" method="post">
                <p></p>
                <fieldset>
                        <legend style="margin-bottom: 5px;">Envoyer un message (<strong>*</strong> champs obligatoires)</legend>
                        <p style="float: left;">
                            <label for="nom">Nom :</label>
                            <br />
                            <input id="nom" name="nom" type="text"
                            value="<? if ($_POST["nom"]) echo $_POST["nom"]?>" />
                            <br />
                            <label for="prenom">Prénom :</label>
                            <br />
                            <input id="prenom" name="prenom" type="text"
                            value="<? if ($_POST["prenom"]) echo $_POST["prenom"]?>" />
                            <br /><br />
                            <label for="from">Adresse de courriel<strong>*</strong> : </label>
                            <br />
                            <input id="from" name="from" type="text"
                            value="<? if ($_POST["from"]) echo $_POST["from"]?>" />
    						</p>
    						<br />
                            <label for="sujet">Sujet<strong>*</strong> :</label>
                            <br />
                            <input id="sujet" name="sujet" type="text"
                            value="<? if ($_POST["sujet"]) echo $_POST["sujet"]?>" />
                            <br />
    						<p><input type="text" value="Tapez ici le mot 'antispam'" size="35" name="antispam" onfocus="javascript:this.value=''" /></p> 
    						<br />
    						<br />
    						<br />
                            <label for="txtmsg">Message :<strong>*</strong></label>
                            <br />
                            <textarea id="txtmsg" name="txtmsg" cols="30" rows="10"><?
                            if ($_POST["txtmsg"])
                                echo $_POST["txtmsg"] ;
                            else echo "Votre message..." ;
                            ?></textarea>
    
                            <br /><br />
                            <input value="Envoyer" name="send" type="submit" />
                        </p>
                    </fieldset>
            </form>
    
            <?
            }
            else{
                // Si c'est ok - secure et données
                // on concatène le texte du message
                $message = $_POST[txtmsg]."\n \nEnvoyé par : ".$_POST[nom]." ".$_POST[prenom]."\n" ;
                // création du header du message
                $headers = "From: ".$from."\n" ;
                $headers.= "Reply-To: ".$from."\n" ;
                $headers.= "X-Mailer: PHP/".phpversion()."\n" ;
                // Cc au webmaster si choix activé
                if ( $copie_au_webmaster == 1 ) {
                    $headers.= "Cc: $mail_webmaster\n" ;
                }
                // On envoi le mail :
                if ( mail($to,$_POST["sujet"],stripslashes($message),$headers) ){
                    // Si le mail a bien été envoyé, message de confirmation
                    echo "Votre mail a bien été envoyé à $to.<br />";
                }
                else{
                    // sinon, message d'erreur.
                    echo "Votre mail n\'a pas pu être envoyé.<br />";
                }
                // envoi d'une copie à l'expéditeur si option choisie
                if ( $copie_a_expediteur == 1 ) {
                    $message = "Copie du mail envoyé sur le site ".$nom_du_site."\n\n". $message ;
                    $headers = "From: ".$to."\n" ;
                    $headers.= "X-Mailer: PHP/".phpversion()."\n" ;
                    $sujet = "Copie de : ". $_POST["sujet"] ;
                    if ( mail($from,$sujet,stripslashes($message),$headers) ){
                        // Si le mail a bien été envoyé, message de confirmation
                        echo "Vous allez recevoir une copie du mail envoyé.<br />";
                    }
                    else{
                        // sinon, message d'erreur.
                        echo "Erreur lors de l'envoi de la copie.<br />";
                    }
                }
            }
            ?>
    Merci d'avance, ca pourra servir d'exemple de mail pour quelqu'un d'autre.
     
  2. Xcepty
    Xcepty WRInaute discret
    Inscrit:
    30 Juin 2005
    Messages:
    53
    J'aime reçus:
    0
    Bonjour jooki,

    Si j'étais toi j'aurai plutôt opté pour un CAPTCHA.
     
  3. mahdivitche
    mahdivitche WRInaute impliqué
    Inscrit:
    6 Janvier 2008
    Messages:
    869
    J'aime reçus:
    0
  4. Xcepty
    Xcepty WRInaute discret
    Inscrit:
    30 Juin 2005
    Messages:
    53
    J'aime reçus:
    0
    Merci pour les liens mahdivitche ^^
     
  5. mahdivitche
    mahdivitche WRInaute impliqué
    Inscrit:
    6 Janvier 2008
    Messages:
    869
    J'aime reçus:
    0
    de rein :lol:

    si tu as besoin des autres exepmles de captcha : http://www.captcha.fr/

    le telechargement est gratuit :lol:
     
  6. jooki
    jooki Nouveau WRInaute
    Inscrit:
    22 Juillet 2008
    Messages:
    4
    J'aime reçus:
    0
    ok merci je vais voir pour le captcha
     
  7. lbache
    lbache Nouveau WRInaute
    Inscrit:
    4 Novembre 2008
    Messages:
    1
    J'aime reçus:
    0
    Réflexion

    Un truc que je ne comprend pas bien dans votre solution. Pourquoi ennuyer le visiteur à saisir un code qui est une manip contraignante alors que l'on peut faire la manip pour lui.
    Exemple :

    On génère une clé :
    Code:
    $my_array = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
    $var_cles ='';
    for ($i=0; $i<=6; $i++) { // 6 si vous voulez une clé à 6 chiffres
      $random = array_rand($my_array);                    
      $var_cles .= $my_array[$random];
    }
    On inititalise une variable session avec comme valeur cette clé :
    Code:
    $_SESSION[verif]=$var_cles;
    Puis on place un champ hidden dans le formulaire avec comme valeur la clés :
    Code:
    <input type="hidden" name="verif" value="<?php echo $var_cles; ?>">
    Sur la page suivante, il suffit de vérifier que la variable SESSION soit identique à la variable du champ hidden.
    Comme la variable ne peut être modifiée que par script, si elle ne sont pas identique c'est que le formulaire vient d'un autre serveur.

    Me trompe-je ?
     
  8. Bacteries
    Bacteries WRInaute passionné
    Inscrit:
    27 Mai 2004
    Messages:
    1 253
    J'aime reçus:
    0
    Y'a aussi des robots qui remplissent les formulaires, donc là ta protection ne fonctionne pas.
     
Chargement...
Similar Threads - securiser mot retaper Forum Date
sécuriser upload fichier csv.gz Développement d'un site Web ou d'une appli mobile 9 Mars 2022
Sécuriser son formulaire de recherche (protection anti-robot) Développement d'un site Web ou d'une appli mobile 24 Février 2015
sécuriser les injections SQL Développement d'un site Web ou d'une appli mobile 20 Novembre 2014
Quel outil pour sécuriser un site ? vérification périodique des fichiers Administration d'un site Web 21 Octobre 2011
Comment sécuriser le lien de mon produit numérique ? e-commerce 18 Août 2011
Sécuriser le fichier error_log par htaccess URL Rewriting et .htaccess 2 Avril 2010
Sécuriser/protéger un site contre d'éventuelles attaques Développement d'un site Web ou d'une appli mobile 12 Mars 2010
Sécuriser l'index du site du duplicate à cause des index multiples Débuter en référencement 18 Février 2010
Sécuriser un Cookie d'authentification Développement d'un site Web ou d'une appli mobile 7 Février 2010
sécuriser un service web ? Développement d'un site Web ou d'une appli mobile 29 Juin 2009
Sécuriser un blog Wordpress en 7 étapes Développement d'un site Web ou d'une appli mobile 28 Mai 2009
Sécuriser un script php de téléchargement de fichiers Développement d'un site Web ou d'une appli mobile 13 Mars 2009
Sécuriser son site Internet Développement d'un site Web ou d'une appli mobile 26 Septembre 2008
Sécuriser un champ textaera (TinyMCE) Développement d'un site Web ou d'une appli mobile 10 Août 2008
Sécuriser WordPress et IPB Administration d'un site Web 17 Avril 2008
Connexion PDO : comment sécuriser les champs de formulaire? Développement d'un site Web ou d'une appli mobile 16 Avril 2008
Sécuriser et protéger son site web Administration d'un site Web 2 Octobre 2007
Securiser mon formulaire mail ? avec les p'tites lettres :) Développement d'un site Web ou d'une appli mobile 24 Juin 2007
Hack, massmailing, ralentissement : comment sécuriser? Administration d'un site Web 12 Mars 2007
[article] Sécuriser son serveur LAMP Administration d'un site Web 18 Août 2006