Ma classe antispam est-elle suffisante ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ma classe antispam est-elle suffisante ?

par D4Y » 24 avr. 2009, 21:56

As-tu pensé au kaptcha?

par @rthur » 24 avr. 2009, 18:56

La réponse ne doit pas passer en GET/POST/COOKIE mais doit rester uniquement sur le serveur. Utilise des sessions ou des fichiers texte côté serveur pour la stocker temporairement.

Par ailleurs, proposer une addition de 2 chiffres entre 1 et 5 ne peut donner qu'un résultat compris entre 1 et 10 et donc la protection est assez faible (si je veux te spammer, j'ai une chance sur 10 que mon message passe, donc il suffit que je tente ma chance plusieurs fois ;) )

par Invité » 24 avr. 2009, 17:19

Non il ya un md5 sur la réponse avant de l'afficher : $this->reponse = md5($nb1+$nb2);

A moins que tu ne parle d'autre chose.. ?

Re: Ma classe antispam est-elle suffisante ?

par @rthur » 24 avr. 2009, 17:16

antispam->getQuestion pour afficher la question dans le label
antispam->getReponse pour stoker la réponse dans un input hidden
:D
Si tu mets en clair la réponse dans le code source de la page où tu poses la question, c'est comme si tu mettais la clé de chez toi sous ton paillasson!

Ma classe antispam est-elle suffisante ?

par supercanard » 24 avr. 2009, 16:26

Bonjour,

Je me suis fait une petite classe antispam very light, super simple et j'aurais voulu savoir si elle était suffisante et un minimum efficace.

Pour son utilisation voilà ce qui se passe...

A l'initialisation du formulaire :
new antispam
antispam->generer
antispam->getQuestion pour afficher la question dans le label
antispam->getReponse pour stoker la réponse dans un input hidden

A l'envoi :
new antispam
antispam->verifier($POST reponseUser, $POST reponse)

<?php
class antispam{
	private $question;
    private $reponse;
    private $reponseUser;
    
	private function setReponseUser($value){
		$this->reponseUser = md5($value);
	}
    public function getQuestion(){
    	return $this->question;
    }
    public function getReponse(){
    	return $this->reponse;
    }
	
	public function generer(){
    	$nb1 = rand(1,5);
        $nb2 = rand(1,5);
        $this->question = $nb1.' et '.$nb2.' ?';
		$this->reponse = md5($nb1+$nb2);
    }
	public function verifier($reponseUser, $reponse){
		// $reponseUser & reponse from $_POST
		$this->setReponseUser($reponseUser);
		$this->reponse = $reponse;
		if($this->reponseUser != $this->reponse){
			throw new Exception('Antispam : mauvaise réponse !');
		}
	}
}
?>