2009-09-08 8 views
1

J'implémente un formulaire de contact pour un site Web, et j'aimerais éviter d'utiliser un captcha car je pense que cela a un effet négatif sur l'expérience utilisateur. Au lieu de cela, j'ai décidé de tester le nombre d'URL qui ont été envoyées avec le message.PHP Détecter le nombre d'URL dans la chaîne

Je récupère le message sous forme de chaîne à partir de la soumission $ _POST. Je sais que des fonctions PHP intégrées telles que stristr() peuvent me confirmer qu'une sous-chaîne existe dans le message mais ce que j'aimerais, c'est le nombre.

De même, en ce qui concerne la détection de spam, est-il approprié de faire correspondre quelque chose comme "</a >"?

Cheers.

Répondre

4

substr_count (texte $, « http ») http://www.php.net/manual/en/function.substr-count.php

Notez que ne suffit pas, mais ne permet à l'utilisateur d'entrer des données non filtrés dans vos champs de formulaire qui obtient en HTML rendus.

Je ne devrais pas être en mesure de mettre le javascript là soit en raison de Cross Site Scripting http://www.owasp.org/index.php/Top_10_2007-Cross_Site_Scripting

Je vous recommande d'utiliser http://htmlpurifier.org/ pour supprimer tout code malveillant.

Enfin pour le filtrage anti-spam je recommande http://akismet.com/

Bonne chance.

+0

html, javascript et le traitement par injection SQL est très bien. Je ne suis même pas en train de rendre quoi que ce soit sur la page, je veux juste interdire automatiquement autant de spams que possible. Tout le monde suppose toujours que parce que je n'ai pas mentionné spécifiquement le traitement par injection HTML que j'ai dû négliger de le faire même si cela n'a rien à voir avec ma question initiale. – Evernoob

+1

Désolé, cependant, il vaut toujours la peine de vous ennuyer s'il y a une chance que cela ne vous soit pas arrivé. Jetez un oeil à Akismet, qui gère le spam beaucoup mieux que le comptage d'URL. C'est ce qui est utilisé dans pratiquement chaque wordpress. –

+0

Aussi dans le cas où vous l'avez manqué j'ai directement répondu à votre question avec la première partie de mon message. Vous permettant d'ignorer le reste. –

0

S'il s'agit d'une forme de contact, il n'est pas nécessaire d'accepter le format html. il suffit d'encoder tout le contenu et de limiter le nombre de messages de la même adresse IP ou de limiter le temps entre les messages.

oui vous pouvez limiter le nombre de urls, mais je ne pense pas que ce soit efficace

+0

Il sera efficace dans la réduction du spam que j'ai déjà à travers le formulaire de contact, qui sont tous infestés d'URL. La plupart des robots, bien que clairement les mêmes sont capables de changer d'adresse IP, mais le temps entre les messages est bonne. – Evernoob

Questions connexes