J'ai un formulaire qui envoie des informations dans une table de base de données. Je l'ai vérifié avec un Javascript mais quel est le meilleur moyen d'arrêter les spammeurs entrant http et tel dans la base de données avec PHP lorsque Javascript est désactivé?Comment arrêter les spammeurs entrant http dans un formulaire à base de données
Répondre
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.
Il y a deux choses à considérer qui devraient être implémentées en parallèle (peut-être y en at-il plus).
- Captcha (comme mentionné précédemment)
- 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.
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 */ }
Vous pouvez utiliser CSRF protection pour empêcher les spammeurs, je l'ai trouvé très efficace.
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.
En fait, un CAPTCHA est une sorte de protection CSRF. – BalusC
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
@BalusC très vrai – Andy
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.
- 1. Comment arrêter l'envoi d'un formulaire vers mysql si la base de données contient un identifiant spécifique?
- 2. Comment protéger les spammeurs contre l'apache?
- 3. Rails: Comment télécharger un fichier à partir d'un http et l'enregistrer dans la base de données
- 4. Comment obtenir les données d'un e-mail entrant, puis copier les données dans un répertoire
- 5. Comment insérer un message électronique entrant dans la base de données mySQL?
- 6. comment arrêter de transférer des données de formulaire lorsque le formulaire est soumis à l'iFrame interne?
- 7. Comment empêcher les mauvais utilisateurs et les spammeurs d'insérer des données indésirables dans les forums?
- 8. Arrêter les champs de formulaire pré-remplissage
- 9. Cadre Zend - ne pas entrer les valeurs dans la base de données - ordures entrant
- 10. Transférer l'authentification de base à un formulaire?
- 11. comment extraire les données de http://www.pse.com.ph/servlet/TickerServletFile enregistrer dans la base de données mysql?
- 12. Arrêter un chargement de formulaire basé sur les données de retour d'un rappel ajax
- 13. arrêter un serveur cherrypy sur http
- 14. Quelle est la meilleure méthode pour arrêter les insertions en double dans la base de données
- 15. Comment enregistrer un appel entrant dans Android
- 16. Comment arrêter le spam dans PHPBB3?
- 17. est-il un moyen d'utiliser Ruby net/http pour poster des données de formulaire à un proxy http?
- 18. OpenID une cible lucrative pour les spammeurs?
- 19. Formulaire HTML/requête de base de données
- 20. Afficher les données de la base de données sous forme de tableau à l'intérieur du formulaire
- 21. Transmission de valeurs de formulaire http à un programme C
- 22. comment détecter le message de chat entrant?
- 23. Comment afficher les données existantes dans les données de base?
- 24. symfony enregistrer le formulaire soumis à la base de données
- 25. Statistiques sur les lieux où vivent les pirates/spammeurs malveillants
- 26. Comment arrêter la soumission du formulaire?
- 27. Création d'une base de données pour un formulaire Web général
- 28. Protection des adresses e-mail contre les robots spammeurs/crawlers
- 29. écran SMS entrant dans Symbian
- 30. Comment arrêter de chercher dans une base de données après avoir trouvé X lignes?
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
C'est une mauvaise nouvelle. Existe-t-il un simple code php à ajouter pour arrêter cela? – frapet
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). –