A plan for
fighting back.
No single check stops fraud.
Attackers rotate identifiers faster than blocklists can track. The answer is a stack — cheap checks first, shared reputation behind them.
Four stages, in order.
Off-the-shelf signals
Public blocklists, line-type checks, jurisdiction filters. Cheap, fast, and enough to stop most attackers.
Shared reputation
Hashed identifiers your peers already caught. Where the fraudsters who look like real users finally show themselves.
Four stages,
in order.
Each stage costs more than the last.
Let the cheap ones filter the bulk.
- Stage 01 At signup
Filter disposable email
github.com/Short-io/otm-detectorDoCheck the MX records of every email. Reject the ones pointing at one-time-mail services.
WhyCatches throwaway domains no static blocklist will ever see. Use otm-detector.
import { getOneTimeMailInfo } from "otm-detector"Catches Throwaway inboxes · temp-mail farms - Stage 02 At signup
Verify phone numbers
DoRequire SMS verification. Turn off high-fraud countries in Twilio Geo Permissions. Reject VoIP with a line-type lookup.
WhyGeo Permissions blocks whole countries. Line Type Intelligence catches the VoIP that slips through in the ones you keep.
n = twilio.lookups.v2 .phoneNumbers(phone) .fetch({ fields: "line_type_intelligence" }) if n.lineTypeIntelligence.type === "voip": rejectCatches Cheap VoIP · high-risk jurisdictions - Stage 03 At signup
Check shared reputation
DoHash the email or phone locally. Check it against trustdb.
WhyThe only defense against fraudsters who look identical to real users — Gmail addresses and rented US numbers that pass every other check.
h = pbkdf2(identifier, salt) if trustdb.hit(h): blockCatches Gmail fraud · rented US SMS · repeat offenders - Stage 04 Post-incident
Feed back what you catch
DoWhen you confirm fraud, report the hashes back to trustdb.
WhyEvery hash you send is one your peers catch before signup. The network only works if signal flows both ways.
trustdb.report(h, { severity: "high", category: "chargeback", })Catches Stronger network with every report
trustdb is one stage · not a replacement for the cheap signals
Request access