Spam bots in gastenboek

Status
Niet open voor verdere reacties.

timmiejboi

Gebruiker
Lid geworden
17 feb 2008
Berichten
32
Hey mensen ,

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

hier mijn script
PHP:
<?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" ?>
    </form>
</form>
          
  <p>
    
        </FORM></TD>
    </TR>
  </TABLE>
 
Laatst bewerkt:
Er zijn verschillende gebruikersvriendelijkere mogelijkheden, denk bijvoorbeeld aan de honeypot-methode (een input veld met behulp van CSS verbergen voor "echte" gebruikers" en bij toevoegen controleren of dat veld leeg blijft) of checken in hoeverre er links in het bericht voorkomen en aan de hand daarvan berichten wel of niet toestaan.
 
Ik heb je een bericht gestuurd via de website. Kijk het nog eens even aan. Is dit de eerste keer dat je Spam krijgt. Anders doen wat Tha Devil schreef. Ik zelf adviseer ook maak een nieuw boekje aan.
 
Ga eens naar

http://validator.w3.org/

Probeer de code die je gaf eens in te voeren bij validate by direct input.

Scroll dan helemaal naar beneden dan zie je dat lijn 112 kolom 15 de tag niet open is.

En er zitten nog meer fouten in zie ik nu.

Hier wat ik zie.

HTML.JPG
 
Ja inderdaad heb het gezien maar vaak zijn de fouten die met > te maken heeft:)
en form was foutje dat weerhoud niet dat het scriptje nu wel na behoren werkt.
nee sinds kort is de spam heel erg denk wel 20 berichten minimaal per dag

ik zou ook wel een honey pot spam scriptje erin willen bouwen.
maar helaas krijg ik zelfde probleem ;)
dat hij niet werkt samen met mij gastenboek
aangezien als je wel wat invuld nog steeds post :(

Met vriendelijke groet,
Timothy
 
Advies is om dat er af te gooien. Gastenboek is leuk, maar als je steeds die rommel krijgt is er toch ook niets meer aan. :(
 
te oude code om te gebruiken maar het is het idee dat telt

$pic is een landvlag
PHP:
<?php
$inifile = "../data/inifile.dat";//zie rechten om te schrijven
$file = "../data/guestbook.dat"; 
$name = $_POST['name'];
$email= $_POST['email'];
$comments = $_POST['comments'];
$ip = $_SERVER["REMOTE_ADDR"];// $_POST['ip'];
echo "<body >\n";
 if (!$_POST['upload']=='submit') {
  if (is_file($file) && (filesize($file)>0)) {
    $gbfile = fopen ($file,'r');
    while (!feof($gbfile)){
        $gbline = fgets($gbfile,1024);
        print "$gbline<br>\n";      
    }
    fclose ($gbfile);
  }else{
    print "Het gastenboek is leeg momenteel.<br>\n";
  }
}else{ // upload uitgevoerd
  // START CONTROLE OP INVOER
  $fout = 0;
  if (!$name || $name == "naam") $name = "";
  if (trim ($name) == ""){
    print "<b>Error(s):</b><br><br>\n";
    print "- als u een naam had mocht je iets schrijven!<br>\n";
    $fout = 1;
  }
  if (!$email || $email == "e mail") $email = "";
  else{
    $at = strpos ($email, "@");
    $punt = strpos ($email, ".");
    if (!$at) $at = "";
    if (!$punt) $punt = "";
    if ($at == "" || $punt == ""){
        if ($fout == 0) print "<b>Error(s):</b><br><br>\n";
        print "- geen geldig email! <i>(u hebt geen geldig email adress gegeven!)</i><br>\n";
        $fout = 1;
    }
  }
  if (!$comments || trim ($comments) == "" || $comments == "commentaar"){
    if ($fout == 0) print "<b>Error(s):</b><br><br>\n";
    print "- u hebt geen commentaar gegeven<br>\n";
    $fout = 1;
  }else {
	$comments = " ".$comments;
  }
  if (strpos ($comments, "search") or strpos ($comments, "sex") or strpos ($comments, "SEX") or strpos ($comments, "drugshop") ){
    print "restricted Error <br>\n";
    print "<META HTTP-EQUIV=Refresh CONTENT='0; URL=http://www.yourdomain.nl/error/traceer.php?ip=".$ip."'>";
    $fout = 1;
  }
  if (strpos ($comments, "ripstore")or strpos ($comments, "netstreamsol")){
        print "restricted Error  <br>\n";
        $fout = 1;
  }
  if (strpos ($comments, "deal")or strpos ($comments, "moneyed messages")){
    print "Anti spam Error<br>\n";
    $fout = 1;
  }
  if (strpos ($comments, "htm") or strpos ($comments, "http") ){
    print "restricted Error geen linken plaatsen <br>\n";
    $fout = 1;
  }
  if ($fout==1){
    print "<br><input class=\"ibb\" type='button' id='button' onClick='javascript:history.go(-1)' value=' Return '>\n";
    print "</html>\n";
    exit;
  }
  // EINDE CONTROLE OP INVOER
  $name = trim ($name);
  $email = trim ($email);
  $comments = trim ($comments);
  $datum = date("l j F Y");
  if ($email == "") $from = $name;
  else { 
    $from = "<a href=\"mailto:".$email."\">".$name."</a>"; }
  if (is_file($file) && (filesize($file)>0)){
    $t_file = fopen ($inifile,'w');
    fputs ($t_file, "<div id=commentaar> <img src=/layout/".$pic.">By <b>");
    fputs ($t_file, $from.", ".$datum.".</b>\n");
    fputs ($t_file, $comments."\n");  
    fputs ($t_file, "</div><hr noshade size=\"1\" color=\"#FFFFCC\">");
      $gbfile = fopen ($file,'r');
      while (!feof($gbfile)){ 
        $gbline = fgets($gbfile,1024);
        fputs ($t_file, $gbline);      
      }
    fclose ($gbfile);      
    fclose ($t_file);
    if (!copy ($inifile,$file)){
        print "<br><input class=\"ibb\" type='button' id='button' onClick='javascript:history.go(-1)' value=' Return '>\n";
        print "</html>\n";
        exit;
    }
    if (!unlink ($inifile)){
        print "<br><input class=\"ibb\" type='button' id='button' onClick='javascript:history.go(-1)' value=' Return '>\n";
        print "</html>\n";
        exit;
    }
  }else{ 
        $gbfile = fopen ('$file','w');
        fputs ($gbfile, $comments."\n");
        fputs ($gbfile, $from."\n");
        fclose ($gbfile);
  }
  print "$name,<br>\n";
  print "<br>\n";
  print "Dank u.<br>\n";
}
?>
denk aan nieuwe functies als ...
PHP:
    function IsItMayBeAtest($test){
        $validationrule="(^[A-Z0-9]{150}$)";
        return preg_match($validationrule,$test);
    }
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan