views:

185

answers:

4

I'm involved in building a donation form for non-profits. We recently got hit by a fast round of low dollar submissions. Many were invalid cards, but a few went through. Obviously someone wrote a script to check a bunch of card numbers for validity, possibly so they can sell them later.

Any ideas on how to prevent or limit the impact of this in the future?

We have control over all aspects of the system (code, webserver, etc). Yes the form runs over https.

A: 

limit submissions from the same IP address to one per minute, or whatever reasonable period of time it would take for a real person to fill out the form

Steven A. Lowe
I'd say limit it even more, maybe once per hour or once per day. I mean, how often is some guy gonna donate to the same website? Most people probably don't donate more than once a month to a given charity.
davr
+4  A: 

When a flood of invalid transactions from a single IP address or small range of addresses is detected, block that address / network.

If a botnet is in use, this will not help. You can still detect floods of low dollar amount submissions and so deduce when you are under attack; during these times, stall low dollar amount submissions to make them take longer; introduce CAPTCHAs for low dollar amount donations; consult your bank's fraud prevention department in case they can make use of your server logs to catch the perpetrators.

Force donors to create accounts in order to make donations; protect account creation with a CAPTCHA, and rate limit donations from any one account.

Raise the minimum permissible donation to a point where it no longer makes financial sense for the scammers to use you in this way.

moonshadow
CAPTCHA should do it
Steven A. Lowe
CAPTCHA on absolutely everything will irritate legitimate donors. You want to make donations as effortless as possible.
moonshadow
Definitely needs to be as effortless as possible. That's one reason why we don't require accounts.
alan szlosek
A: 

Raising the minimum donation to a point where it no longer makes financial sense for the scammers to use you in this way will help in general.

This. How many legitimate donations do you get for under 5 bucks, anyway?

Ryan
Won't the guilty party simply increase the minimum amount that they'll try? I know they're trying to fly under the radar of the banks and on bank statements, but these days 10-20 is a more common amount to see on your statement than 2.35. Do you have specific experience with this?
alan szlosek
+1  A: 

Instead of CAPTCHAs, which will annoy users, you might want to take advantage of the fact that most people have javascript enabled while bots don't. Simply create a small piece of javascript that when run inserts a particular value in a hidden field.

For those that have Javascript disabled you can show the CAPTCHA (use the <noscript> tag), and you can then accept a submission only if either of these measures check out.

For maximum annoyance to evildoers you could make the difference between the succeed message and the failure message computationally hard to distinguish (say everything is the same, except for one picture that displays the message) but easy to understand for humans.

tomjen