Just nu i M3-nätverket
Jump to content

Gästboksspamskydd med ASP


Christoph

Recommended Posts

Hej,

 

jag underhåller en sida med bl a en gästbok som har problem med spam.

 

Nu trodde jag att jag var lite smart och gjorde följande:

 

När besökaren vill skriva in något i gästboken kan de ange sitt namn och ett meddelande och måste dessutom ange hur många bokstäver ordet "Spamskydd" har. Det antalet kan man välja i en select-box. För att undvika att spammaren kan lära sig "det är option nr. x uppifrån", så genereras option-listan med random, dvs. ena gången går listan från 2 till 18, nästa gång från 5 till 14 osv. Men det är klart, det är alltid det inlägget där man måste välja 9:an. Efter submit kollar jag om användaren har vald 9:an.

 

Men - kort och gott, det funkar inte, det kommer ändå spam in i gästboken, och knappast är det någon som använder sig av klipp+klistra... Men hur, det vet jag inte...

 

Har ni någon idé om vad man kunde göra åt problemet? Någon som kommer på en bättre idé?

 

Hälsningar,

 

Christoph

 

Link to comment
Share on other sites

Hej,

sökte lite på eforum för jag hade för mig att zerblat hade ett bra tips på det hela. Såg då även att du i tidigare inlägg skrivit att du inte vill ha en bild-som-visar-tecken-som-användare-skall-skriva.

Nåväl, länken till zerblats inlägg:

//eforum.idg.se/viewmsg.asp?EntriesId=826101#826160

 

Lite mer om lösningen (scrolla ner till zerblats inlägg):

//eforum.idg.se/viewmsg.asp?EntriesId=847387#847387

 

Jag tröttnade så mycket på spam att jag spärrade av gästboken tills vidare.

Testade alltså inte zerblats lösning, men tänkte använda den när det blir dags att starta upp gästboken igen.

 

 

Link to comment
Share on other sites

Mr Andersson

Vad händer om fältet "spamskydd" inte ens finns med vid postningen?

Har du lagt in spärr så att postningen måste komma från just ditt formulär?

 

Det underlättar om du visar kod...

 

 

 

Link to comment
Share on other sites

Väljer du inget, sparas inte heller ditt inlägg. Sa här ser formuläret ut:

 

<%
 Randomize
 LowerBound = 10000
 UpperBound = 99999
 Kod = Int((UpperBound - LowerBound + 1) * Rnd + LowerBound)  
 LowerBound = 1
 UpperBound = 9
 AntalVal = Int((UpperBound - LowerBound + 1) * Rnd + LowerBound)
 LowerBound = 11
 UpperBound = 19
 AntalVal2 = Int((UpperBound - LowerBound + 1) * Rnd + LowerBound)    
%>
 <h1>Senaste nytt</h1>
<p>Här kan du själv skriva in en rad och ladda upp en bild (OBS! I jpg-format), bildens storlek anpassas automatisk. Längst ner, efter det sista inlägget, kan du söka efter ett visst inlägg. Dessutom kan du kommentera samtliga inlägg genom att klicka på länken "Kommentera inlägget" under varje inlägg.</p>
<p>Det kan tar en stund att ladda upp en bild, ha tålamod. Tomma inlägg (utan rubrik och utan meddelande) sparas inte, men det är fritt fram att ange namn och/eller e-postadress.</p>
   <table id="gastbok"><form method="post" encType="multipart/form-data" action="__guestbook.asp" name="guestbook">
     <tr><th>Namn</th><td class="col2"><input type="text" name="Namn<% =Kod+100 %>" maxlength="30"></td></tr>
     <tr><th>E-post</th><td class="col2"><input type="text" name="Epost<% =Kod+100 %>" maxlength="50"></td></tr>
     <tr><th>Rubrik</th><td class="col2"><input type="text" name="Rubrik<% =Kod+100 %>" maxlength="40"></td></tr>
     <tr><th>Meddelande</th><td class="col2"><textarea name="Meddelande<% =Kod+100 %>"></textarea></td></tr>
     <tr><th>(JPG-)Bild</th><td class="col2"><input type="File" name="Fil<% =Kod+100 %>"></td></tr> 
     <tr><th>Spamskydd</th><td class="col2">Ordet "Spamskydd" har hur många bokstäver? <select name="Spam<% =Kod+100 %>">
     <option value="">Välj här</option>
     <% For c = AntalVal to AntalVal2
          Response.Write "<option value=" & Chr(34) & c & Chr(34) & ">" & c & "</option>" & vbCrLf
        Next %></select></td></tr> 
     <tr><td colspan="2"><hr></td></tr>
     <input type="hidden" name="kod" value="<% =Kod %>">
     <tr><td colspan="2" class="knapp"><input id="knapp" type="Submit" value="Spara inlägg" onClick="this.disabled=true;this.value=':: V.G. VÄNTA, INLÄGG SPARAS ::';submit();"></td></tr>
 </form>  
 </table>

 

Och det här är för att kolla värdet, i __guestbook.asp:

 

  If Spam="" Then Response.Redirect "guestbook.asp"
 Spam = CInt(Spam)*1
 If Spam<>9 Then Response.Redirect "guestbook.asp"

 

Gästboken ligger pa sportfiske.ax/guestbook.asp.

 

Tack för hjälpen!

 

Christoph

 

Link to comment
Share on other sites

If Spam="" Then Response.Redirect "guestbook.asp"

Spam = CInt(Spam)*1

If Spam<>9 Then Response.Redirect "guestbook.asp"

 

Därefter kommer det det som vanligvis kommer,

 

Conn.Execute ("Insert Into Guestbook (Namn, Epost, Msg)...")

 

 

 

Link to comment
Share on other sites

Hej igen,

 

jag la till ett koll som avgör om inlägget skall sparas beroende på tidsskillnaden när sidan med formuläret, guestbook.asp, visades och när den togs emot av __guestbook.asp. Är skillnaden lägre än 20 sek sparas inte inlägget. Är det rimlig, 20 sek, tycker du?

 

/Christoph

 

Link to comment
Share on other sites

Mr Andersson

Jag har gjort på ett helt annat sätt.

 

Skapa ett slumptal, spara det i en sessionsvariabel, gör ett dolt formfält med valfritt namn och sätt value till detta slumptal.

 

När du sen validerar formuläret, så är det bara att kontrollera att fältet innehåller samma som sessionsvariablen.

 

En kombination med ditt förslag är ju fullt möjligt, men 20 sek är för lång tid tycker jag.

 

 

 

Link to comment
Share on other sites

Tack för ditt svar. Det syfter dock på att spam-roboten struntar i självaste formuläret och "vänder" sig direkt till scriptet som tar hand om inmatningen, __guestbook.asp, eller hur? Är det så i praktiken? Annars, ifall roboten automatiskt fyller i alla fält i formuläret, borde det ju även funkar för roboten att få ett session-id som tas emot av __guestbook.asp och inlägget sparars, eller har jag missförstod ngt?

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...