Take the 2-minute tour ×
Webmasters Stack Exchange is a question and answer site for pro webmasters. It's 100% free, no registration required.

I know about captcha. However, often it is stated that captcha stops legitimate users due to the inconvenience. Are there other solution, that in particular look for pattern in the input similar to e-mail spamfilters, or for random sequences of letters? (In particular, a solution that works with drupal would be good).

share|improve this question
1  
duplicate of webmasters.stackexchange.com/questions/719/… –  HoLyVieR Jul 19 '10 at 18:57
    
You might also look at: webmasters.stackexchange.com/questions/194/… –  artlung Jul 19 '10 at 21:10
    
As I answered in the question HoLyVieR linked to, Akismet is excellent. It uses a database/heuristic approach, I believe. –  Dennis Williamson Jul 20 '10 at 2:21
add comment

4 Answers 4

up vote 5 down vote accepted

Here are 3 ways I have seen to do this:

In general there are 3 "ways" to solve this:

  1. Make the user do something to prove they are human. CAPTCHA or anything like it where the user must do extra work.
  2. See how long it take the user to enter data. Computers are much faster at filling forms out.
  3. Obfuscate what inputs are being used for what in the HTML itself.

All of these methods have shortcomings. CAPTCHA requires more work and eventually developers can find ways to solve the CAPTCHA programatically. Some have even resourted to paying cheap labor to manually overcome them. Waiting will work well until it becomes prevalent and then hackers will just make their programs wait until they submit. Finally, obfuscation except you have to tell the user what to enter so that will give some of it away. You can further obfuscate those fields by using Javascript to populate names later. It is all basically a cat and mouse game.

I think CAPTCHA ends up being the most effective and the most annoying for the user though.

share|improve this answer
    
Obfuscating isn't a good option at all: how will a sight-impaired person using a screen reader be able to fill out the form? –  bob esponja Jul 20 '10 at 10:52
    
@Bob - Good point, that is another issue with obfuscation. –  RandomBen Jul 20 '10 at 14:30
1  
I think you meant "least annoying", not "most annoying". :) –  Hello71 Jul 20 '10 at 20:18
add comment

I've heard of people putting fields in forms and then hiding them behind an image or div. Then when the form is submitted, if that 'hidden' field is filed out then they know it was filed out by a bot and not a human.

Obviously this method has drawbacks (particularly for the visually impaired) and I can't say I've ever implemented it myself.

share|improve this answer
add comment

For solutions like this, if you're using an existing content management system, always seek best-of-breed solutions for your specific tool. The plus is that usually these tools are straightforward to install and test and if they don't work, try others out. If I were in your shoes and would check out Mollom. Here's a description:

Mollom provides a one stop solution for all spam problems and can protect the following Drupal forms. It offers and intelligently combines:

  • CAPTCHAs -- both image and audio CAPTCHAs
  • text analysis
  • user reputations

and can:

  • block comment form spam
  • block contact form spam
  • protect the user registration form against fake user accounts
  • protect the password request form
  • block spam on any node form, such as forum topics, articles, stories, pages, and more

For more information about Mollom, you can read this Mollom introduction.

share|improve this answer
add comment

I use the antispam module and configured it to let akismet check for spam. Works very well for me. It does mean you still get a lot of spam messages, but they are filtered out nearly flawlessly.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.