Spamschutz für Webformulare

Diskutiere Spamschutz für Webformulare im Web & Grafik Forum im Bereich Internet & Telekomunikation Forum; Hallo liebe Gemeinde, ich habe ein Problem und hoffe, dass mir hier einer von den Spezis helfen kann. Ich habe eine Formular (z.B. ein...
  • Spamschutz für Webformulare Beitrag #1
M

minima3

Neues Mitglied
Dabei seit
10.12.2009
Beiträge
2
Reaktionspunkte
0
Hallo liebe Gemeinde,

ich habe ein Problem und hoffe, dass mir hier einer von den Spezis helfen kann.

Ich habe eine Formular (z.B. ein Kontaktformular), über das ständig Spam einläuft. Ich habe schon ein Captcha eingebaut und auch ne IP-Sperre drin. Leider wechselt der Bot die IP-Adresse, sodass das nicht so viel nutzt. Das Captcha ist sowieso überflüssig, da der Bot dies komplett übergeht.

Nun zu meiner Frage:
Kann mir jemand ein Script empfehlen/geben, mit dem ich solche Angriffe selbst durchführen kann? Das würde mir bei der Bekämpfung solcher Bots sehr helfen.
Wenn natürlich jemand die Non-Plus-Ultra-Lösung hat, mit der Bots nicht klar kommen, nehme ich auch das gerne an. Würde aber eigentlich lieber selber verstehen, wie die arbeiten, um mir selbst eine Lösung zu programmieren.

Wenn noch irgendwelche Infos benötigt werden, um mir eine Antwort zu geben, meldet euch bitte, dann schaue ich mal, was ich noch nachlegen kann :)

Vielen Dank vorerst
 
  • Spamschutz für Webformulare Beitrag #2
the_viper

the_viper

Bekanntes Mitglied
Dabei seit
27.11.2000
Beiträge
1.977
Reaktionspunkte
0
habe in meinen kontaktformularen (php) einfaches mathe eingebaut, z.b. wieviel ist 11 minus 4? (das operationszeichen als wort, mit random die zahlenauswahl und die operation), läuft prima, die bots geben ruhe.
 
  • Spamschutz für Webformulare Beitrag #3
M

minima3

Neues Mitglied
Dabei seit
10.12.2009
Beiträge
2
Reaktionspunkte
0
Vielen Dank für die Antwort!
Hast du das Script vielleicht für mich? Dann würde ich das gern mal ausprobieren.
 
  • Spamschutz für Webformulare Beitrag #4
the_viper

the_viper

Bekanntes Mitglied
Dabei seit
27.11.2000
Beiträge
1.977
Reaktionspunkte
0
schau's dir mal an im aufbau, wenn du gut php kannst, verstehst du die antispam abschnitte.
es ist ein modifiziertes guestbox script von www.realone.ch , habs mir damals ergoogelt.


relevant ist
PHP:
if (md5($_POST['erg'])!=$_POST['s']) echo "<div class=\"hinweis\">Sorry, SPAM-Verdacht, Mathe nicht richtig gel&ouml;st. Bitte nochmals versuchen.</div>";
else...

und


PHP:
<textarea name="text" cols="35" rows="4"></textarea> <br />
<?php
  $_SESSION['spamnr']=rand(10000,99999);
  echo "<input type=\"hidden\" name=\"spamnr\" value=\"".$_SESSION['spamnr'].".".time()."\" />";
  $a=rand(10,20);
  $b=rand(1,9);
  $m=rand(1,2);
  if ($m==1) $s=$a+$b; else $s=$a-$b;
  $s=md5($s);
  echo('AntiSPAM: wieviel ist '.$a);
  if ($m==1) echo(' plus '); else echo(' minus ');
  echo($b.'? <input type="text" name="erg" value="" size="2" maxlength="3" />
  <input type="hidden" name="s" value="'.$s.'"  />
  <br />');
?>
<input class="button" type="submit" name="gesendet" value="eintragen" /> <input class="button" type="reset" name="reset" value="l&ouml;schen" />

PHP:
<?PHP
/*
  Guestbox 0.85 - (09. April 06)
  Michael Salzer
  http://www.realone.ch
  It's free to use, but don't delete these lines.
*/
session_name("guestbox");
session_start();

if (isset($_GET['admin_logout'])) {
  session_destroy();
  header("Location: guestbox.php?".str_replace("&admin_logout", "", $_SERVER['QUERY_STRING']));
}

if (isset($_POST['auth_password']) && isset($_POST['auth_username'])) {
  include_once "gb_config.php";
  include_once "gb_functions.php";
  if (md5($_POST['auth_password']) == $admin_password && $_POST['auth_username'] == $adminname) {
    $_SESSION['admin'] = $_POST['auth_username'];
    //Header("Location: ./?".str_replace("admin_login", "", $_SERVER['QUERY_STRING'])."");
  } else {
    //Header("Location: ".baseurl()."/guestbox.php");
    echo "<div class=\"Hinweis\">
      <b>Sorry, falsches Passwort</b><br />Mögliche Fehler: <br />
      - Falsche Eingabe<br />-Passwort nicht verschlüsselt in der gb_config.php
      </div><br />";
  }
}

include_once "gb_config.php";
include_once "gb_functions.php";
if (!isset($_GET['command'])) {
  if (!isset($_GET['Anfangsposition'])) Header("Location: guestbox.php?Anfangsposition=0");
}
/* error level auf krass */
//error_reporting (E_ALL);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
  <head>
    <title>Guestbox 0.85</title>
    <link rel="stylesheet" href="<?=$style; ?>" type="text/css" />
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta name=keywords content="Guestbox, Gästebuch, Michael, Salzer, www.4yu.ch, Gratis, 0.9" />
    <meta name="generator" content="http://www.realone.ch" />
    <meta name="language" content="German, de, deutsch" />
    <script type="text/javascript" src="javascript.js"></script>
  </head>
  <body>
    <div id="all">
      <?PHP
      
      {
if (isset($_POST['gesendet'])) {
  //echo $_POST['spamnr'];
  $spamlevel = 1;
  $spamverdacht = strtoupper($_POST['text']);
  
  for($f=1;$f<count($spams);$f++)
  {
    if (strstr($spamverdacht, strtoupper($spams[$f]))){
      $spamlevel++;
      $rest = substr(strstr($spamverdacht, strtoupper($spams[$f])), strlen(strtoupper($spams[$f])));
      if (strstr($rest, strtoupper($spams[$f]))){
        //Spam kommt also mehr als 1x vor! -> Härter damit umgehen!
        $spamlevel = $spamlevel + 2;
      }
    }
  }

  $spam = explode(".", $_POST['spamnr']);
if (md5($_POST['erg'])!=$_POST['s']) echo "<div class=\"hinweis\">Sorry, SPAM-Verdacht, Mathe nicht richtig gel&ouml;st. Bitte nochmals versuchen.</div>";
else
  if ($_SESSION['spamnr'] == $spam['0'] && $spam['1'] > time()-($anzahlmin*60) && $spamlevel < $zugelassen) {
    $_POST['text'] = trim($_POST['text']); // Damit werden Leerzeichen am Beginn und Ende geloescht
    if ((!empty($_POST['name'])) && (!empty($_POST['text']))){
        $betreff = "Guestbook-Entry!";
        
        $inhalt = $_POST['name'].", ".$_POST['nation']." (".$_POST['mail']." - ".$_POST['url'].") hat dir folgenden Kommentar geschrieben:\n\n".$_POST['text'];
        $headers = "From: Guestbook-Entry ";
        if (@mail($empfaenger, $betreff, $inhalt, $headers)) {
            //Mail wurde versendet
        } else {
            echo "<div class=\"hinweis\"><b>Beim Versenden einer Email an den Webmaster ist ein Fehler aufgetreten.</b></div>";
        }

        $nummer = 0;
        $datei=fopen($gbdaten,"r");
        $all='';
        while (feof($datei) == 0):
            $nummer++;
            $data = fgets($datei,1000000);
            if ($name != $nummer)
            if ($anzahllogs <= 0 || $nummer < $anzahllogs)
            $all = $all . $data;
        endwhile;
        fclose($datei);

        $ip=$_POST['ip_adress'];//getenv("REMOTE_ADDR");
        
        $all = time()."\t".$_POST['name']."\t".$_POST['nation']."\t".$_POST['mail']."\t".$_POST['url']."\t".preg_replace("/(\015\012)|(\015)|(\012)/","<br />",htmlentities($_POST['text']))."\t".$ip."\t\n".$all;
        $all = chop($all);
        $all = trim($all);
        $datei = fopen($gbdaten,"w");
        fputs($datei,$all);
        fclose($datei);
        echo "<div class=\"hinweis\">Vielen Dank =)</div>";
    } else {
        echo "<div class=\"hinweis\">Bitte Name und Kommentarfeld ausfüllen!</div>";
    }
  } else {
    echo "<div class=\"hinweis\">Sorry, entweder ist Session abgelaufen oder dein Beitrag enthält zuviele Spam-Kriterien. Bitte nochmals versuchen.</div>";
  }
}
$ip_adr=getenv("REMOTE_ADDR");
?>
<form action="guestbox.php?<?=$_SERVER['QUERY_STRING'];?>" name="sms" METHOD="post" onSubmit="return ueberpruefe();">
<input type="text" name="name" value="" size="30" maxlength="40" /> Name<br />
<input type="text" name="mail" value="" size="30" maxlength="60" /> Email-Adresse<br />
<input type="text" name="url" value="http://" size="30" /> Homepage<br />
<input type="hidden" name="ip_adress" value="<?php echo($ip_adr); ?>" size="30" />
<select name="nation">
  <?php
  include("gb_nations.php");
  while (list($staat, $flagge) = each($nations)) {
    if ($staat == $nation) {
      echo '<option value="'.$staat.'" selected="selected">'.$staat.'</option>';
    } else {
      echo '<option value="'.$staat.'">'.$staat.'</option>';
    }
  }
  ?>
</select> Land <br />
<textarea name="text" cols="35" rows="4"></textarea> <br />
<?php
  $_SESSION['spamnr']=rand(10000,99999);
  echo "<input type=\"hidden\" name=\"spamnr\" value=\"".$_SESSION['spamnr'].".".time()."\" />";
  $a=rand(10,20);
  $b=rand(1,9);
  $m=rand(1,2);
  if ($m==1) $s=$a+$b; else $s=$a-$b;
  $s=md5($s);
  echo('AntiSPAM: wieviel ist '.$a);
  if ($m==1) echo(' plus '); else echo(' minus ');
  echo($b.'? <input type="text" name="erg" value="" size="2" maxlength="3" />
  <input type="hidden" name="s" value="'.$s.'"  />
  <br />');
?>
<input class="button" type="submit" name="gesendet" value="eintragen" /> <input class="button" type="reset" name="reset" value="l&ouml;schen" /> <input onClick="window.open('./smilies.php','Name','toolbar=no,status=no,menubar=no,width=95,height=145')" type="button" name="smilies" value=":-)" />
</form>
<?php 
}
      
      if (isset($_GET['admin_login']) && !isset($_SESSION['admin'])) {
        include_once "admin_login.php";
      }
      
      include_once "seitenwechsel.php";
      include_once "gbshow.php";
      ?>
    </div>
  </body>
</html>
 
Zuletzt bearbeitet:
Thema:

Spamschutz für Webformulare

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.173
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben