Page 1 sur 1

Ma classe antispam est-elle suffisante ?

Posté : 24 avr. 2009, 16:26
par supercanard
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 !');
		}
	}
}
?>

Re: Ma classe antispam est-elle suffisante ?

Posté : 24 avr. 2009, 17:16
par @rthur
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!

Posté : 24 avr. 2009, 17:19
par Invité
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.. ?

Posté : 24 avr. 2009, 18:56
par @rthur
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 ;) )

Posté : 24 avr. 2009, 21:56
par D4Y
As-tu pensé au kaptcha?