I get a lot of user registration spam on my ubercart site, and it's turning into a cat and mouse game of IP-blocking using the Access Rules feature of D7.
So I thought it was time to use Mollom to protect the User Registration Form. But when I go to add that form at .../admin/settings/mollom/add, the only option is CAPTCHA. There isn't the option of text analysis. Yet a guick glance at the e-mail address or username they pick can tell me it's a spam account, and only once have I found a real user who's username looked like that a spammer would use.
I don't want to enable CAPTCHA - a lot of users of my store are not very confident with computers, and I don't want the intimidation barrier of filling out a CAPTCHA. Is there any way that Mollom could either:
- Use text analysis and only present the CAPTCHA if it's unsure - much as Mollom works for comment spam. The text analysis would analyse the username, the e-mail address, or both.
- Use a beacon image file in the page, and detect if that image is loaded. All the spam registrations I get are from bots who don't even bother to load the whole page. I don't even need the user to enter the CAPTCHA correctly; if the CAPTCHA question displays on screen it's a real user. So a carefully crafted blank.gif type of file could detect a spam registration without asking the user to enter any CAPTCHA data.
It may not be possible, but I thought I'd ask.
| Comment | File | Size | Author |
|---|---|---|---|
| #36 | 0001-1250614-by-sun-Allow-to-protect-user-registration-fo.patch | 13.04 KB | sun |
| #35 | 1250614-analysis.patch | 45.74 KB | sun |
| #34 | 1250614-analysis.patch | 45.52 KB | sun |
| #31 | 1250614-analysis.patch | 46.27 KB | sun |
| #29 | 1250614-analysis.patch | 39.72 KB | sun |
Comments
Comment #1
ebeyrent commented+1
Comment #2
lasha11 commentedComment #3
jamesoakley@lasha11 - it is normal to develop new features like this for the latest version of Drupal, then to backport them to Drupal 6.x later. IMO, the correct version of this issue should be 7.x-1.x-dev, which is not to deny its usefulness for Drupal 6 too.
Comment #4
fuzzy76 commented+1
Comment #5
jhibbets commentedI would like to add some thoughts here as we've seen some pretty heavy SPAM user accounts on opensource.com. At our peak, we were getting several per minute, thankfully, that's subsided. Now were down to a certain few [spam accounts] a day and others that are questionable [because they look suspicious and never complete the registration process].
In our findings, we believe that a lot of this is caused for blackhat SEO purposes, the spam accounts are just trying to get a link on the site.
I think one solution to this would be to have a common database of emails detected as spam. For example, if we block a user on our site (ideally, there would be an option for block user as spam), feedback is sent to mollom to collect these addresses. There is a threshold each site could set, say we set our variable at 10. If 10 other sites have marked the email as spam, their unable to complete the registration form on our site. Collectively, all Drupal sites using mollom could help build up this database, but have the flexibility to 1) use it for user registration (and probably commenting) and 2) control the threshold variable.
I'd love to hear other peoples thoughts about this idea and if it would work.
I imagine that a lot of the higher traffic sites would still get hit, but maybe this solution helps everyone, especially the longtail of sites with less registration traffic.
Regards,
Jason
Comment #6
rbayliss commented+1 for this.
Comment #7
sunLet's see how far we get. I expect a couple of failures in tests which verify that this isn't possible currently.
Comment #9
sunRemoved the assertions from tests.
Comment #10
sunAdding tests required me to include fixes for #1034442: no records of user registration form text analysis in mollom db table
The new tests will throw test failures, since the Mollom backend needs to be adjusted first.
Comment #12
sunMoved these todos into #1818458: Remove {mollom} schema default values for reason and languages
For now, I'll comment out the failing tests, since this patch can technically land before the Mollom API officially supports this.
That said, we need to make sure (as in: test) that the suggested protection mode for the user registration/profile form defaults to CAPTCHA. Done so in attached patch.
Further testing also revealed that reporting user accounts is broken currently. Had to invent a new 'report path' concept for reporting entities through a report link in an e-mail notification. Added tests and docs for that.
Comment #13
sunFor the sake of patch reviews, here's #12 ignoring white-space changes.
Comment #14
sunCommitted and pushed #12 to 7.x-2.x.
Attached patch removes the commented out test assertions, which will pass as soon as Mollom's REST Testing API has been updated.
Comment #16
sunNow including additional tests for the hosted Mollom moderation system integration.
Comment #18
sun#14: mollom.user-analysis-type-test.14.patch queued for re-testing.
Comment #19
sunRe-rolled #16 against HEAD, and removed the Mollom server override for the tests.
Comment #21
sunLooks like the testing server responses are not fixed yet.
Comment #23
sunAll tests are passing locally for me as of today.
Comment #25
sunFinal adjustments.
Comment #26
sunThanks for reporting, reviewing, and testing! Committed to 7.x-2.x.
A new development snapshot will be available within the next 12 hours. This improvement will be available in the next official release.
We might want to consider to backport this to 6.x-2.x, but not planning to do that for now.
Comment #27
sunFirst pass. Only includes #12.
I expect (tons of) test failures, but let's see.
Comment #29
sunComment #31
sunHrm... this is quite the challenge to backport to D6 :)
Backported the hook_entity_CRUD() functions from D7 to D6 as private functions, and invoking them from the individual API integration hooks now. Seems to work fine in manual testing. Let's see how this affects tests.
Comment #33
sunOh wow, I just spotted this fancy gimmick in D6's user_register_submit():
user_save()does not invoke a hook prior to inserting the new user record.These two issues combined unfortunately mean that this facility cannot be backported. :-/
However, I will still backport the architectural changes, since those are helpful for the Mollom moderation system integration, because those are already done now, and in general, keeping the code in sync between D7 and D6 simplifies future backports.
Comment #34
sunComment #35
sunComment #36
sunCommitted and pushed to 6.x-2.x.
Now the follow-up patch from #25.
Comment #37
sunCommitted and pushed to 6.x-2.x.