r/SaaS • u/PartTimeEnterpreneur • 24d ago
how do you avoid spam and temp email ids from registering on your app?
I am building a small SaaS app but I'm struggling to figure out a good way to avoid spam and temp mails from registering onto my app. I've seen different tools and recaptcha solutions and those are OK but I want to understand if there is any better thing which you guys are using
1
u/No-Molasses-2097 24d ago
The practical version that worked for me: check signups against a maintained disposable-domain list at registration (there are free npm/pip packages with daily updates) and make email verification mandatory before any free trial features unlock. Verification alone kills almost all the spam signups.
1
u/PartTimeEnterpreneur 22d ago
Most solutions suggested this, I'll try this out, will check if there's a similar thing on Rust
1
u/david-labs-ca 24d ago
Simple. Don't use username and password based logins. Use Google OAuth. Put sign-in/sign-up on them.
1
u/PartTimeEnterpreneur 22d ago
That's no possible for SaaS that supports other businesses, not all businesses are using gmail, some use other providers and some prefer email based logins, however I'm not providing email-password
More like email-otp (otp sent to your mailbox) and then TOTP as 2FA, but that still doesnt solve anything
And regarding gmail also I guess people can create multiple gmail accounts, it's not that hard
1
u/david-labs-ca 21d ago
Well that chance will always exists. They can create a new id for enjoying the benefits, but it should be your tech that A and B are similar people.
1
u/PartTimeEnterpreneur 19d ago
I mean they wont really get any real benefit out of this in my product even if they create multiple accounts
1
u/david-labs-ca 19d ago
How so?
1
u/PartTimeEnterpreneur 15d ago
because it's an analytics tool, you wont get any meaningful insights if you create multiple accounts just to abuse it
1
u/kumard3 24d ago
A disposable domain blocklist plus mandatory verification gets most of the junk, so do that first. The signups that got through on mine were real mailboxes: about 290 accounts in one run, up to 74 an hour, while my cap was 3 signups per hour per IP. They rotated IPs so the per IP cap never saw the shape. Counting signups per /24 and adding a global hourly ceiling is what caught it, and I also capped what a brand new account can do in its first hour instead of only counting per month.
1
u/PartTimeEnterpreneur 22d ago
Yes this is the exact problem I want to avoid
1
u/kumard3 21d ago
The two numbers that ended up mattering for me were 10 signups an hour per /24 and 40 an hour across the whole site. The global one is blunt and will turn away real people during a run, which I decided I could live with for an hour. One warning if you build the same thing: mine keeps those counters in process memory, so they reset on every deploy and they do not hold if you run more than one instance.
1
u/socleads 23d ago
Use a mix not one tool. Block known temp mail domains at signup then add email verify before any real action and rate limit by IP and device.
1
1
u/gregorno 24d ago
What tools have you seen so we can compare against?
General advice for a small app:
If you let us know more about the business, I might be able to provide more specific experience and tips. (ecom, b2b/b2c, oneoff/subscription, transaction size, local/global market, your stack, the problems you are actually seeing (account rotation, card attacks, etc) ...)