spambots in gastenboek
heb een simpele gastenboek, zonder sql .
maar sinds enkele weken heb ik spambots op me site
Ik heb geprobeert ipbans via .Htacces te geven.
maar omdat ze telkens proxy's pakken maakt dat dus niet uit:)
nu ben ik bezig met een vraag die ze moeten invullen waar maar 1 goede antwoord voor is
maar helaas werkt het niet naar behoren
zonder intevullen kunnen ze gewoon posten
heb deze topic ook op andere forum geplaats
maar daar nog geen hulp gehad
hier mijn script
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php
$amount=15;
if ($_GET['action']=='write') {
header('location: gb.php?action=read&start=0');
$file=fopen('gastenboek.txt','a');
$message=str_replace("\r",'',$message);
$message=str_replace("\n",'{{',$_GET['message']);
fwrite($file,$_GET['name'].'|||'.$_GET['email'].'|||'.date('d-m-Y').'|||'.$_GET['url'].'|||'.$message."\n");
fclose($file);
}
$start=(isset($_GET['start'])?$_GET['start']:0);
$gastenboek=Array();
$gastenboek=file('gastenboek.txt');
?>
<SCRIPT language="JavaScript">
function validate(form) {
if (form.name.value=="") {
alert("Vul je naam in");
return false;
} else if (form.message.value=="") {
alert("Vul je bericht in");
return false;
}
}
if (isset($antispam == '8') or ($antispam == 'acht')) {
echo $content=eregi_replace("<!--beginning-->", "<!--beginning-->$message", $content);
}
</SCRIPT>
<P>
<TABLE width="100%" cellspacing="0" cellpadding="0" >
<TR>
<TD><b>Ik zou het leuk vinden als je een berichtje achter laat in het gastenboek.</b><br></TD>
</TR>
</TABLE>
<TABLE width="100%" cellspacing="0" cellpadding="0">
<TR>
<TD class="side"> Berichten <? echo $start+1; ?> tot en met <? echo min($start+$amount,sizeof($gastenboek)); ?>.
<HR> <TABLE width="100%" >
<?
$gastenboek=array_reverse($gastenboek);
for ($i=$start;$i<$start+$amount && $i<sizeof($gastenboek);$i++) {
list($name,$email,$date,$url,$message)=explode('|||',$gastenboek[$i]);
$message=str_replace('{{',"\n",$message);
echo '<TR><TD><B>'.($email!=""?'<A href="mailto:'.$email.'">'.$name.'</A>':$name).'</B></TD><TD
align="right"><B>'.$date.'</B></TD></TR>'."\n";
echo ($url!=""?'<TR><TD colspan="2"><A href="'.$url.'" target="_blank">'.$url.'</A></TD></TR>':'')."\n";
echo '<TR><TD colspan="2"><SPAN>'.str_replace("\n",'<BR>',htmlspecialchars
($message)).'</SPAN></TD></TR>'."\n";
echo '<TR><TD colspan="2"><HR></TD></TR>'."\n";
}
?>
</TABLE>
<CENTER>
<?
if ($start>0) echo '<A href="gb.php?start='.max(0,$start-$amount).'"><<<</A> ';
if ($start+$amount<sizeof($gastenboek)) echo ' <A href="gb.php?start='.($start+$amount).'">>>></A>';
?> </CENTER></TD>
</TR>
</TABLE>
<P>
<TABLE width="100%" cellspacing="0" cellpadding="0" >
<TR>
<TD class="side">Nieuw bericht</TD>
</TR>
</TABLE>
<TABLE width="100%" cellspacing="0" cellpadding="0" >
<TR>
<TD class="side"> <FORM action="gb.php" method="GET" onSubmit="return validate(this);">
<INPUT type="hidden" name="action" value="write">
<TABLE class="side">
<TR>
<TD>Naam:</TD>
<TD><INPUT type="text" name="name" size="30"></TD>
</TR>
<TR>
<TD>E-Mail:</TD>
<TD><INPUT type="text" name="email" size="30">
<font color="#f19028">(optioneel)</font></TD>
</TR>
<TR>
<TD>Homepage:</TD>
<TD><INPUT name="url" type="text" value="http://" size="30">
<font color="#f19028">(optioneel)</font></TD>
</TR>
<TR>
<TD>Bericht:</TD>
<TD><TEXTAREA name="message" cols="50" rows="5"></TEXTAREA></TD>
</TR>
</TABLE>
Anti-spam code: hoeveel is zes plus twee? <input type="text" name="antispam" size="3">
<input type="submit" name="email_submit" value="submit" ?>
$amount=15;
if ($_GET['action']=='write') {
header('location: gb.php?action=read&start=0');
$file=fopen('gastenboek.txt','a');
$message=str_replace("\r",'',$message);
$message=str_replace("\n",'{{',$_GET['message']);
fwrite($file,$_GET['name'].'|||'.$_GET['email'].'|||'.date('d-m-Y').'|||'.$_GET['url'].'|||'.$message."\n");
fclose($file);
}
$start=(isset($_GET['start'])?$_GET['start']:0);
$gastenboek=Array();
$gastenboek=file('gastenboek.txt');
?>
<SCRIPT language="JavaScript">
function validate(form) {
if (form.name.value=="") {
alert("Vul je naam in");
return false;
} else if (form.message.value=="") {
alert("Vul je bericht in");
return false;
}
}
if (isset($antispam == '8') or ($antispam == 'acht')) {
echo $content=eregi_replace("<!--beginning-->", "<!--beginning-->$message", $content);
}
</SCRIPT>
<P>
<TABLE width="100%" cellspacing="0" cellpadding="0" >
<TR>
<TD><b>Ik zou het leuk vinden als je een berichtje achter laat in het gastenboek.</b><br></TD>
</TR>
</TABLE>
<TABLE width="100%" cellspacing="0" cellpadding="0">
<TR>
<TD class="side"> Berichten <? echo $start+1; ?> tot en met <? echo min($start+$amount,sizeof($gastenboek)); ?>.
<HR> <TABLE width="100%" >
<?
$gastenboek=array_reverse($gastenboek);
for ($i=$start;$i<$start+$amount && $i<sizeof($gastenboek);$i++) {
list($name,$email,$date,$url,$message)=explode('|||',$gastenboek[$i]);
$message=str_replace('{{',"\n",$message);
echo '<TR><TD><B>'.($email!=""?'<A href="mailto:'.$email.'">'.$name.'</A>':$name).'</B></TD><TD
align="right"><B>'.$date.'</B></TD></TR>'."\n";
echo ($url!=""?'<TR><TD colspan="2"><A href="'.$url.'" target="_blank">'.$url.'</A></TD></TR>':'')."\n";
echo '<TR><TD colspan="2"><SPAN>'.str_replace("\n",'<BR>',htmlspecialchars
($message)).'</SPAN></TD></TR>'."\n";
echo '<TR><TD colspan="2"><HR></TD></TR>'."\n";
}
?>
</TABLE>
<CENTER>
<?
if ($start>0) echo '<A href="gb.php?start='.max(0,$start-$amount).'"><<<</A> ';
if ($start+$amount<sizeof($gastenboek)) echo ' <A href="gb.php?start='.($start+$amount).'">>>></A>';
?> </CENTER></TD>
</TR>
</TABLE>
<P>
<TABLE width="100%" cellspacing="0" cellpadding="0" >
<TR>
<TD class="side">Nieuw bericht</TD>
</TR>
</TABLE>
<TABLE width="100%" cellspacing="0" cellpadding="0" >
<TR>
<TD class="side"> <FORM action="gb.php" method="GET" onSubmit="return validate(this);">
<INPUT type="hidden" name="action" value="write">
<TABLE class="side">
<TR>
<TD>Naam:</TD>
<TD><INPUT type="text" name="name" size="30"></TD>
</TR>
<TR>
<TD>E-Mail:</TD>
<TD><INPUT type="text" name="email" size="30">
<font color="#f19028">(optioneel)</font></TD>
</TR>
<TR>
<TD>Homepage:</TD>
<TD><INPUT name="url" type="text" value="http://" size="30">
<font color="#f19028">(optioneel)</font></TD>
</TR>
<TR>
<TD>Bericht:</TD>
<TD><TEXTAREA name="message" cols="50" rows="5"></TEXTAREA></TD>
</TR>
</TABLE>
Anti-spam code: hoeveel is zes plus twee? <input type="text" name="antispam" size="3">
<input type="submit" name="email_submit" value="submit" ?>
</form>
</form>
<p>
</FORM></TD>
</TR>
</TABLE>
Gewijzigd op 26/08/2014 17:59:24 door Bas IJzelendoorn
Toevoeging op 26/08/2014 17:44:52:
een input maken met de text er in?
<INPUT name="code" type="text" value="antispam code" size="30">
Gewijzigd op 26/08/2014 17:42:46 door Jordy xxx
Jordy xxx staat erachter al <input type="text" name="antispam" size="3">
Ikzelf heb ooit eens een vangnet ingebouwd om een checkbox te maken, en die een style="display:none" mee te geven. Indien deze aangevinkt is, wat veel botjes doen, dan loopt het script dood. Als deze niet is aangevinkt (want een normaal mens ziet die checkbox niet) dan gaat het script gewoon door en wordt het bericht in het gastenboek geplaatst.
Het valt te proberen, maar het is de vraag of het effectief blijft. Anders is een CAPTCHA-code iets wat je kan overwegen. Of misschien anders AKISMET gebruiken, deze pikt de spam er tussen uit, alleen is deze voor commerciële doeleinden betaald, wel betaalbaar gelukkig.
Gewijzigd op 26/08/2014 19:05:42 door - Ariën -
Zou je mischien zo een box in mijn script kunnen verwerken kijken of dat werkt :$?
Kijk met
Voor de mensen die zich afvragen waarom mijn script dood gaat. De gebruiker ziet er toch niks van, en een bot maakt het niks uit dat de layout afgekapt zal worden door een die();
Ik redirect bots altijd naar de NSA (in de ijdele hoop dat ze daar van schrikken)
en wil hem graag werkend krijgen iemand aanpassingen van me script om mischien te zorgen dat hij werkt
versie staat online
www.dartcafe-sport.nl/gb.php
Code (php)
1
2
3
2
3
if (isset($antispam == '8') or ($antispam == 'acht')) {
echo $content=eregi_replace("<!--beginning-->", "<!--beginning-->$message", $content);
}
echo $content=eregi_replace("<!--beginning-->", "<!--beginning-->$message", $content);
}
Dit is PHP-code, en kan je niet in een Javascript-blok zetten.
Gewijzigd op 26/08/2014 21:38:11 door - Ariën -
Ik klik op submit en hop er is een leeg item in het gastenboek bij.
-Santhe- ik merk het inderdaad
Kan je wat relevante code laten zien?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?
$amount=15;
if ($_GET['action']=='write') {
header('location: gb.php?action=read&start=0');
$file=fopen('gastenboek.txt','a');
$message=str_replace("\r",'',$message);
$message=str_replace("\n",'{{',$_GET['message']);
fwrite($file,$_GET['name'].'|||'.$_GET['email'].'|||'.date('d-m-Y').'|||'.$_GET['url'].'|||'.$message."\n");
fclose($file);
}
$start=(isset($_GET['start'])?$_GET['start']:0);
$gastenboek=Array();
$gastenboek=file('gastenboek.txt');
?>
<SCRIPT language="JavaScript">
function validate(form) {
if (form.name.value=="") {
alert("Vul je naam in");
return false;
} else if (form.message.value=="") {
alert("Vul je bericht in");
return false;
}
}
if (isset($antispam == '8') or ($antispam == 'acht')) {
echo $content=eregi_replace("<!--beginning-->", "<!--beginning-->$message", $content);
}
</SCRIPT>
<P>
<TABLE width="100%" cellspacing="0" cellpadding="0" >
<TR>
<TD><b>Ik zou het leuk vinden als je een berichtje achter laat in het gastenboek.</b><br></TD>
</TR>
</TABLE>
<TABLE width="100%" cellspacing="0" cellpadding="0">
<TR>
<TD class="side"> Berichten <? echo $start+1; ?> tot en met <? echo min($start+$amount,sizeof($gastenboek)); ?>.
<HR> <TABLE width="100%" >
<?
$gastenboek=array_reverse($gastenboek);
for ($i=$start;$i<$start+$amount && $i<sizeof($gastenboek);$i++) {
list($name,$email,$date,$url,$message)=explode('|||',$gastenboek[$i]);
$message=str_replace('{{',"\n",$message);
echo '<TR><TD><B>'.($email!=""?'<A href="mailto:'.$email.'">'.$name.'</A>':$name).'</B></TD><TD
align="right"><B>'.$date.'</B></TD></TR>'."\n";
echo ($url!=""?'<TR><TD colspan="2"><A href="'.$url.'" target="_blank">'.$url.'</A></TD></TR>':'')."\n";
echo '<TR><TD colspan="2"><SPAN>'.str_replace("\n",'<BR>',htmlspecialchars
($message)).'</SPAN></TD></TR>'."\n";
echo '<TR><TD colspan="2"><HR></TD></TR>'."\n";
}
?>
</TABLE>
<CENTER>
<?
if ($start>0) echo '<A href="gb.php?start='.max(0,$start-$amount).'"><<<</A> ';
if ($start+$amount<sizeof($gastenboek)) echo ' <A href="gb.php?start='.($start+$amount).'">>>></A>';
?> </CENTER></TD>
</TR>
</TABLE>
<P>
<TABLE width="100%" cellspacing="0" cellpadding="0" >
<TR>
<TD class="side">Nieuw bericht</TD>
</TR>
</TABLE>
<TABLE width="100%" cellspacing="0" cellpadding="0" >
<TR>
<TD class="side"> <FORM action="gb.php" method="GET" onSubmit="return validate(this);">
<INPUT type="hidden" name="action" value="write">
<TABLE class="side">
<TR>
<TD>Naam:</TD>
<TD><INPUT type="text" name="name" size="30"></TD>
</TR>
<TR>
<TD>E-Mail:</TD>
<TD><INPUT type="text" name="email" size="30">
<font color="#f19028">(optioneel)</font></TD>
</TR>
<TR>
<TD>Homepage:</TD>
<TD><INPUT name="url" type="text" value="http://" size="30">
<font color="#f19028">(optioneel)</font></TD>
</TR>
<TR>
<TD>Bericht:</TD>
<TD><TEXTAREA name="message" cols="50" rows="5"></TEXTAREA></TD>
</TR>
</TABLE>
Anti-spam code: hoeveel is zes plus twee? <input type="text" name="antispam" size="3">
<input type="submit" name="email_submit" value="submit" ?>
$amount=15;
if ($_GET['action']=='write') {
header('location: gb.php?action=read&start=0');
$file=fopen('gastenboek.txt','a');
$message=str_replace("\r",'',$message);
$message=str_replace("\n",'{{',$_GET['message']);
fwrite($file,$_GET['name'].'|||'.$_GET['email'].'|||'.date('d-m-Y').'|||'.$_GET['url'].'|||'.$message."\n");
fclose($file);
}
$start=(isset($_GET['start'])?$_GET['start']:0);
$gastenboek=Array();
$gastenboek=file('gastenboek.txt');
?>
<SCRIPT language="JavaScript">
function validate(form) {
if (form.name.value=="") {
alert("Vul je naam in");
return false;
} else if (form.message.value=="") {
alert("Vul je bericht in");
return false;
}
}
if (isset($antispam == '8') or ($antispam == 'acht')) {
echo $content=eregi_replace("<!--beginning-->", "<!--beginning-->$message", $content);
}
</SCRIPT>
<P>
<TABLE width="100%" cellspacing="0" cellpadding="0" >
<TR>
<TD><b>Ik zou het leuk vinden als je een berichtje achter laat in het gastenboek.</b><br></TD>
</TR>
</TABLE>
<TABLE width="100%" cellspacing="0" cellpadding="0">
<TR>
<TD class="side"> Berichten <? echo $start+1; ?> tot en met <? echo min($start+$amount,sizeof($gastenboek)); ?>.
<HR> <TABLE width="100%" >
<?
$gastenboek=array_reverse($gastenboek);
for ($i=$start;$i<$start+$amount && $i<sizeof($gastenboek);$i++) {
list($name,$email,$date,$url,$message)=explode('|||',$gastenboek[$i]);
$message=str_replace('{{',"\n",$message);
echo '<TR><TD><B>'.($email!=""?'<A href="mailto:'.$email.'">'.$name.'</A>':$name).'</B></TD><TD
align="right"><B>'.$date.'</B></TD></TR>'."\n";
echo ($url!=""?'<TR><TD colspan="2"><A href="'.$url.'" target="_blank">'.$url.'</A></TD></TR>':'')."\n";
echo '<TR><TD colspan="2"><SPAN>'.str_replace("\n",'<BR>',htmlspecialchars
($message)).'</SPAN></TD></TR>'."\n";
echo '<TR><TD colspan="2"><HR></TD></TR>'."\n";
}
?>
</TABLE>
<CENTER>
<?
if ($start>0) echo '<A href="gb.php?start='.max(0,$start-$amount).'"><<<</A> ';
if ($start+$amount<sizeof($gastenboek)) echo ' <A href="gb.php?start='.($start+$amount).'">>>></A>';
?> </CENTER></TD>
</TR>
</TABLE>
<P>
<TABLE width="100%" cellspacing="0" cellpadding="0" >
<TR>
<TD class="side">Nieuw bericht</TD>
</TR>
</TABLE>
<TABLE width="100%" cellspacing="0" cellpadding="0" >
<TR>
<TD class="side"> <FORM action="gb.php" method="GET" onSubmit="return validate(this);">
<INPUT type="hidden" name="action" value="write">
<TABLE class="side">
<TR>
<TD>Naam:</TD>
<TD><INPUT type="text" name="name" size="30"></TD>
</TR>
<TR>
<TD>E-Mail:</TD>
<TD><INPUT type="text" name="email" size="30">
<font color="#f19028">(optioneel)</font></TD>
</TR>
<TR>
<TD>Homepage:</TD>
<TD><INPUT name="url" type="text" value="http://" size="30">
<font color="#f19028">(optioneel)</font></TD>
</TR>
<TR>
<TD>Bericht:</TD>
<TD><TEXTAREA name="message" cols="50" rows="5"></TEXTAREA></TD>
</TR>
</TABLE>
Anti-spam code: hoeveel is zes plus twee? <input type="text" name="antispam" size="3">
<input type="submit" name="email_submit" value="submit" ?>
</form>
</form>
<p>
</FORM></TD>
</TR>
</TABLE>
Je zult het beste gewoon in de PHP-code zelf moeten kijken.
Verder zou je voor je fwrite() functie die controle kunnen inbouwen. Maar ik denk dat een vaste rekensom erg snel gekraakt zal worden.
Ger van Steenderen op 26/08/2014 21:01:21:
Ik redirect bots altijd naar de NSA (in de ijdele hoop dat ze daar van schrikken)
Meen je dit echt? Ik ken er die het zouden durven :)
Gewijzigd op 27/08/2014 08:47:20 door - Ariën -
deze is live en ook blind vriendelijk. en bovendien bots kunnen er weinig mee.
hier is een link naar de PHP voorbeeld van Re captcha. je moet wel even een key activeren op de captcha website
https://developers.google.com/recaptcha/docs/php < is waar je php documentatie vind
en hier krijg je een API key
https://www.google.com/recaptcha/admin#whyrecaptcha
ik wil niet adverteren ofzo. dus ik hoop dat ik niemand kwaad doe maar dit helpt bij mij altijd i.p.v. zelf een captcha te knutselen
Het leuke van ReCaptcha (wat door Google is over overgekocht) is dat er een effectieve bot-net herkenning in zit. Als een botnetje de Captcha voor zijn kiezen krijgt, is deze aanzienlijk moeilijker dan gemiddeld.
das alleen maar positief toch?
Jazeker.