Om det sker från samma IP-nummer kan en IP-block vara en bra lösning.
Har gästbok där jag hela tiden får spam. Finns det något script som kan lösa detta problem?
Tack för hjälpen
4 svar · 338 visningar · startad av andbjo037
Har gästbok där jag hela tiden får spam. Finns det något script som kan lösa detta problem?
Tack för hjälpen
Om det sker från samma IP-nummer kan en IP-block vara en bra lösning.
How To Stop Comment Spam
http://www.sitepoint.com/article/stop-comment-spam
Lägg in en spärr som gör att det måste gå 5 minuter innan inläggen från samma person postas?
http://www.webforum.nu/showthread.php?s=&threadid=123653&forumid=163
jag tyckte nitro gav väldigt bra förslag, och nu ska jag bara orka fixa det också. Ett annat sätt kan vara att be besökaren skriva in ditt efternamn. (och det nitro sade: att lägga ett dolt fält som heter tex. name och sedan sätta det riktiga namnfältet som tychobrahe eller vad som helst, och sedan kolla att det dola fältet inte är ifyllt. i så fall slipper du bottar i alla fall.) Du kan validera mailen efter ett RegEx. Det tar väl bort en del. Sen kan du även sätta tabindex till submit till något helt annat, vilket också kommer att försvåra för bottar. Så tex. när man har fyllt i meddelandet och trycker på tab så kommer man upp i din navigation istället.
Ett annat sätt kan vara att sätta en onFocus event på id="message", dvs textboxen. Detta event startar helt enkelt en räknare i javascript som räknar ner från 4 sekunder eller nåt. Så får de som kopierar och klistrar in vänta ett tag, och kanske tror att det inte fungerar.
Det är väl egentligen de bästa råden jag kan ge. Eller jo - du kan ju självklart kolla, som nitro sade, att det finns en referrer:
protected bool checkReferrer()
{
if (Request.UriReferrer.IndexOf("guestbook.aspx") == -1) //kollar om din gästboksida finns med
//i referrern (detta är C#.Net)
{
return false;
}
else return true;
}
protected void submitMessage(string message, ..., ..., ...)
{
if (checkReferrer())
{
//kod för att lägga in det i databasen
}
}
public void Page_Load(object o, EventArgs e)
{
if (IsPostBack())
{
submitMessage(txtMessage.Text, ..., ..., ...)
}
}