Avatar billede BTEngineer Novice
24. januar 2015 - 17:19 Der er 8 kommentarer og
1 løsning

Anti spam i MySQL database

Hej.

Jeg arbejder på et større projekt, som har rigtig mange besøgende (internationalt), men der har været store problemer med vanvittig mange "fake"/"spam" oprettelser på sitet. I den forbindelse var tanken at vente med at oprette de forskellige ting i databasen, til EFTER at den enkelte bruger har aktiveret deres email via et link i den velkomstmail de modtager efter oprettelse. De oplysninger der er indtastet i submit-formen i oprettelsesprocessen, gemmes blot i en "temporary" databasetabel, hvor de automatisk slettet via et cronjob efter 2 uger, hvis de ikke er aktiveret.

Men selvom jeg har lavet dette, kommer der stadig en masse fake/spam oprettelser i databasetabellerne, selvom der først indsættes data, hvis det pågældende link indeholder et bestemt md5-streng som matcher en i den temporary-tabel. Jeg forstår ikke engang hvordan det kan ske? Alt er kodet i PDO, så sql-injections mv. skulle ikke være et problem.

Men hvad er problemet her? I selve oprettelsesprocessen er der også en captcha, som skal udfyldes inden man kan fortsætte.

Håber der er en vis mand eller dame, som kan hjælpe mig :)

Mvh
Henrik
Avatar billede arne_v Ekspert
24. januar 2015 - 17:37 #1
Spammere har vel ogsaa valide email adresser hvor et program kan laese link og aktivere??
Avatar billede arne_v Ekspert
24. januar 2015 - 17:42 #2
Ideer:
* black list email adresser saa de kun kan bruges til spam en gang
* haandter forskellige email adresser forskelligt:
    - fornavn.efternavn@isp.dk er med paen sandsynlighed OK og kan accepteres med det samme
    - blabla12345@hotmail.com er lidt mere risikabel og du kunne laegge enten en forsinkelse eller an manuelgodkendelse ind
* check paa IP adress
    - ignorer evt. dem fra meget suspekte lande
    - hvis de angiver land i deres oevrige oplysninger saa sammenlign det med deres IP og matcher det ikke saa enten ignorer eller lav manuel godkendelse
Avatar billede arne_v Ekspert
24. januar 2015 - 17:42 #3
Jeg forstaar ioevrigt ikke behovet for temp tabel. Du kunen jo bare have brugt et flag i den rigtige tabel.
Avatar billede BTEngineer Novice
24. januar 2015 - 18:32 #4
Tak for svar.

- Blacklist, hvordan? I forvejen kontrolleres det, om den enkelte email allerede er oprettet, hvis ja, oprettet brugeren ikke.

Fine idéer. Men jeg forstår bl.a. ikke hvordan de kommer igennem captcha'en i oprettelsesprocessen. Kan ikke lave være med at tænke på, hvordan facebook eksempelvis har håndteret dette? Har de også en masse spam i deres databaser?

Tak for din hjælp :)
Avatar billede arne_v Ekspert
24. januar 2015 - 19:47 #5
Husker du at gemme email adresser naar du *sletter* en spammer saaledes at der ikke kan oprettes en bruger senere med samme email adresse?
Avatar billede arne_v Ekspert
24. januar 2015 - 19:48 #6
Krigen mod spammere er en langvarig krig hvor der hele tiden sker en udvikling.

Andre sites som er interessante for spammere har ogsaa problemer.

Eksperten.dk har haft besoeg af en spammer.

LinkedIn har problemer med spammere.

O.s.v..
Avatar billede arne_v Ekspert
24. januar 2015 - 19:49 #7
Husk ioevrigt at PDO ikke garanterer mod SQL injection. Du skal huske at bruge prepare i PDO for at det beskytter!!
Avatar billede BTEngineer Novice
06. marts 2015 - 14:36 #8
Jeg siger mange tak for hjælpen. Beklager at jeg først svare nu.

Smid gerne et svar, hvis du ønsker points!

Mvh
Henrik
Avatar billede arne_v Ekspert
06. marts 2015 - 19:43 #9
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester