2010-03-18 1 views

Répondre

6

Vous pouvez mettre en œuvre un CAPTCHA sur le formulaire:

http://en.wikipedia.org/wiki/CAPTCHA

Modifier: vérifier certainement aussi des données de formulaire sur le côté serveur et vérifier les balises html etc, comme d'habitude, mais le CAPTCHA devrait aider à lutter contre attaques de spam automatisées.

+2

Le travail de Captcha contre les robots simples, mais ils peuvent être surmontés si quelqu'un veut vraiment. Récemment, il a été découvert qu'un site populaire qui vend des billets pour des concerts se vendait en quelques secondes parce qu'un groupe de bots prenait toutes les meilleures places pour le marché de la revente, malgré le fait qu'un captcha est requis pour chaque achat. – tloach

+0

C'est une mauvaise nouvelle. Existe-t-il un simple code php à ajouter pour arrêter cela? – frapet

+0

Tout peut être «forgé», d'une manière ou d'une autre. Mais il n'y a pas de méthode simple pour éviter cela. Vous devez simplement appliquer des mesures de sécurité adéquates au danger. Dans la plupart des cas, un bon captcha est plus que suffisant (avec la vérification du serveur ofc). –

2

Il y a deux choses à considérer qui devraient être implémentées en parallèle (peut-être y en at-il plus).

  1. Captcha (comme mentionné précédemment)
  2. Vérifiez vos données sur le côté serveur! Vous avez écrit cela en javascript. C'est bien, mais le même processus de vérification devrait être écrit en PHP.

Eh bien, pour CAPTCHA vous devrez faire sa vérification sur le côté serveur de toute façon. Mais même si vous décidez de ne pas implémenter captcha, vous devez effectuer la vérification des données côté serveur.

3

Ne faites jamais confiance au client. Toujours valider toutes les données du côté serveur. JavaScript pour la validation de formulaire peut juste être une fonctionnalité supplémentaire. Vous pouvez commencer avec les fonctions PHP de base pour vérifier si le contenu contient certaines chaînes que vous n'aimez pas, par exemple. "http: //".

 
if (strpos('http://', $_POST['message']) !== false) { /* refuse */ } 
3

Vous pouvez utiliser CSRF protection pour empêcher les spammeurs, je l'ai trouvé très efficace.

What it is et how it works

Une autre méthode sournoise est d'inclure un champ « pot de miel » - un champ caché qui ne doit jamais être soumis avec le contenu. Si c'est rempli, vous savez que c'est du spam. Aucune de ces méthodes ne nécessite un CAPTCHA agaçant.

+1

En fait, un CAPTCHA est une sorte de protection CSRF. – BalusC

+0

CSRF est utilisé pour toutes sortes de mauvaises choses, mais les formulaires de spam n'en font généralement pas partie. CSRF consiste à utiliser l'autorisation/l'autorisation de quelqu'un d'autre pour effectuer des actions non autorisées. – Jacco

+0

@BalusC très vrai – Andy

0

Je suggère d'utiliser la fonction htmlentities() avant de faire votre insertion.

De toute évidence, votre insertion doit être effectuée en utilisant parametrized queries pour interagir avec la base de données. captcha est certainement une option, mais il sert plus à limiter combien de fois quelqu'un peut poster, pas ce que ils peuvent poster. Utilisez l'échappement hmtl (encore une fois, la fonction htmlentities()) pour empêcher l'utilisateur d'entrer des choses que vous ne voulez pas.

Questions connexes