WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Ftåga och svar i form (https://www.wn.se/forum/showthread.php?t=24805)

vidir 2007-11-04 14:53

fick plötsligt över 300 email (bara spam) under helgen via mitt kontaktform..

Jag ger snart upp, detta får man att tappa lusten att finnas med på internet.

Jag sitter här och er hellt mollställd, finns det något enkelt sätt att sätta ett fråga fält in i mitt enkla formulär?

Typ, Vad heter gillou i förnamn Svar: osv. ?


<form name="contact" method="post" onSubmit="return valform();" action="skicka.php">
Namn

<input type="textbox" name="textname">


E-mail adress

<input type="input" name="email">






Meddelande:


<textarea name="details" cols="40" rows="8" wrap="VIRTUAL" id="details"></textarea>




<input type="submit" name="submit" value="Skicka">
<input type="reset" name="reset">
</form>

Tack på förhand..

coredev 2007-11-04 15:00

Hej. Det finns rätt enkla saker som du kan göra.

Oftast är det en spindel som hämtar källkoden till ditt formulär, för användning vid senare tillfälle. Om du har en "hidden" variabel i ditt formulär som ändras varje dag så skulle du stoppa de flesta spam-attacker, eftersom roboten kommer att använda ett gammalt värde. Exempel

Kod:

<input type="hidden" name="secretcode" value="<?php echo(md5('KimJongIl' . date('z'))); ?>" />
KimJongIl fungerar som ett kryptologiskt salt och date('z') producerar The day of the year (starting from 0)

Sedan jämför du bara att secret_code är det samma som du förväntade dig, innan du skickar iväg mejlet / registrerar användare / what ever. Har tagit bort 99% av problemen för mig.

fors 2007-11-04 15:07

Citat:

Originally posted by coredev@Nov 4 2007, 15:00
Hej. Det finns rätt enkla saker som du kan göra.

Oftast är det en spindel som hämtar källkoden till ditt formulär, för användning vid senare tillfälle. Om du har en "hidden" variabel i ditt formulär som ändras varje dag så skulle du stoppa de flesta spam-attacker, eftersom roboten kommer att använda ett gammalt värde. Exempel

Kod:

<input type="hidden" name="secretcode" value="<?php echo(md5('KimJongIl' . date('z'))); ?>" />
KimJongIl fungerar som ett kryptologiskt salt och date('z') producerar The day of the year (starting from 0)

Sedan jämför du bara att secret_code är det samma som du förväntade dig, innan du skickar iväg mejlet / registrerar användare / what ever. Har tagit bort 99% av problemen för mig.

Värt att notera är att användaren kan skicka in fel dag om denna skriver i formuläret vid övergången mellan två dygn. Det kan man ju kolla på serversidan, att runt midnatt så är det okej med båda datumen.

studiox 2007-11-04 16:22

Lättast är ju att lägga in en bild som man måste "skriva av"; som dom flesta forum använder idag vid nyregistreringar. Annars kan du verifiera e-post adressen med en enkelt MX uppslagning, spammar gillar inte att använda riktiga adresser eller domäner.

vidir 2007-11-05 10:51

Tack för svaren,, jag undrar dock om det du skrev "fors" att man lägger en hidden <input type="hidden" name="secretcode" value="<?php echo(md5('KimJongIl' . date('z'))); ?>" />

om jag förstår dig rätt så skapar jag ett input fält "secretcode" där besökaren skriver in det hemliga "KimJongIl" men hur lägger jag in detta i filen send.php ?

coredev 2007-11-05 12:29

Citat:

Originally posted by vidir@Nov 5 2007, 11:51
Tack för svaren,, jag undrar dock om det du skrev fors att man lägger en hidden input type=hidden name=secretcode value=?php echo(md5(KimJongIl . date(z))); ? /
om jag förstår dig rätt så skapar jag ett input fält secretcode där besökaren skriver in det hemliga KimJongIl men hur lägger jag in detta i filen send.php ?

Tja vidir.

Nej användaren behöver inte skriva in något alls. "secretcode" är en hidden-variabel i ditt formulär som ändras en gång per dag. Eftersom spam-script oftast använder en cachad (alltså gammal) version av din sida så kommer de ha fel värde i "secretcode".

KimJongIl är bara ett kryptologiskt salt som gör md5:an lite säkrare för vissa attacker. Hitta på något eget. Vad det är spelar ingen roll, bara du använder det på alla ställen där du genererar md5:an.

Detta är alltså en jäkligt enkel lösning, som inte kräver något av användaren. Användaren vet inte ens om det.

E du me mig? om inte får jag försöka förklara bättre :)

jonny 2007-11-05 13:50

Eller så gör du samma sak baserat på besökarens ip-adress, borde fungera det också :)

stakes 2007-11-05 16:02

En annan liten klurig lösning man kan göra för att lura en del spambots. Har fungerat för mig i de flesta fall.

<input type="text" style="display: none;" name="email" />

Detta fält kommer botten fylla i då den i regel letar efter generella fält som namn, email, url osv. En vanlig användare kommer dock inte se fältet och därmed inte fylla i det, sen kontrollerar du om det är ifyllt, om så är fallet så är det garanterat en bot som gjort det.

PKaze 2007-11-05 19:00

Det var en del kluriga lösningar här, jag tackar för det jag också.

Själv har jag löst spamproblemet genom att ha ett extrafält där det t.ex. står "Skriv dator i rutan här bredvid:", men det kräver ju som sagt ett extrafält för besökaren att fylla i.

Kristoffer G 2007-11-05 20:08

två olika lösningar som jag själv använder

1. Ett extra fält där besökaren får svara på "vad är 10+80" där 80 är ett slumpat nummer
2. Ett extra fält där besökarna får skriva in ett utskrivet ord baklänges. Orden har jag i databasen.

Aldrig haft problem med spam

vidir 2007-11-06 14:04

Gärna lite kodexempel av ditt brazzan,, please!! :rolleyes:


Alla tider är GMT +2. Klockan är nu 16:36.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson