Page MenuHomePhabricator

Provide a way to increase CAPTCHA difficulty in abuse filters
Open, Needs TriagePublic

Description

AbuseFilter should support setting CAPTCHA difficulty per filter. There are cases where the current CAPTCHA is insufficient to slow down persistent abusers. We need a way to make specific filters more difficult and slower to solve.

Ideally, this could include:

  • A difficulty setting per filter if CAPTCHA is enabled (e.g., multiple CAPTCHAs being required)
  • A setting to randomly vary difficulty (e.g. a percentage chance of a harder CAPTCHA)
  • A way to cycle through different CAPTCHA types or configurations, if available

Background: CAPTCHA has been helpful so far since fully disallowing certain abusive edits can backfire (some bad actors respond by adapting their tactics). What we need is the same experience you get on certain websites when using a sketchy VPN or network: CAPTCHA after CAPTCHA after CAPTCHA. Some added configuration could help make that possible.

Event Timeline

Pppery subscribed.

I don't think the concept of CAPTCHA difficulty exists at all right now.

I don't think the concept of CAPTCHA difficulty exists at all right now.

Many CAPTCHA systems increase the difficulty level simply by requiring multiple CAPTCHAs to be solved. That's why I mentioned that as an example of how to implement difficulty in the first bullet point. I wasn't trying to define the solution too narrowly or assume changes would be needed to the CAPTCHA system itself. The key point is that AbuseFilter needs to support configurable CAPTCHA behavior so filters can trigger harder or more time-consuming challenges when needed.

Another idea that has been discussed is the idea of being able to set a random failure rate for CAPTCHAs. This would only be used for highly accurate filters targeting severe abuse.

Increasing a CAPTCHA's difficulty is probably normally done to stop bots which manage to solve easier CAPTCHAs. When Cloudflare or Google display their most annoying CAPTCHAs, they probably do so in response to bot traffic: Once someone has proven their humanity (and perhaps some CPU work), they're allowlisted with a cookie.

Wikipedia's use case for a difficulty setting is different: We want to increase the amount of time and work a human has to spend on solving the CAPTCHA. We don't necessarily have to make the letters harder to detect or to reduce accessibility; that's not the point. We could display a fully-accessible series of 20 simple math questions and it would still do the job.

Another idea that has been discussed is the idea of being able to set a random failure rate for CAPTCHAs. This would only be used for highly accurate filters targeting severe abuse.

This could be extremely effective for filtering out mass vandalism by users who don't care about their edits enough to try again.

I'd even say we should have a two-dimensional setting: Bot difficulty from 0 to 100, human work from 0 to 100. Displaying a maths question in plain text would be 0:10, displaying ten of them would be 0:100. Using images instead of text would increase the left number instead.