ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » Shoutbox Problem

Geschlossen
  1. #1
    User Pic
    der rang Mitglied
    Registriert seit
    03.04.2008
    Beiträge
    9
    Beitragswertungen
    0 Beitragspunkte
    Hallo,

    ich besitze die aktuellste Version von dem Ilch-Script.
    In letzter Zeit hatte ich Probleme mit Sachen die man als "Bot" bezeichnen kann. Erst haben sich diverse Server aus den USA und aus Spanien eingewählt um ein paar Gästebucheinträge zu hinterlassen...

    Jedoch darf nun die Shoutbox dran glauben.
    Da mir es nun auf die Nerven ging, habe ich die Shoutbox im Admin Menü auf "Schreiben ab User gestellt" damit die Gäste keine Shoutboxeinträge mehr posten dürfen.

    Jedoch schaffen sie es anscheinend trotzdem! Diverse Erneuerungen der Shoutbox haben auch keine Lösung gebracht. (siehe Downloadbereich oder Forum)

    Ich glaube eigentlich eher weniger, also nicht das es ein angemeldeter User ist bzw. einer mit einen höheren Rang.
    In der großen Datenbank habe ich die Beiträge auch noch nicht von der Shoutbox gefunden. Konnte ja sein das IP's o. ä. mitgeloggt werden. Hab aber nichtmal die Zeilen gefunden, leider.

    Gibt es ein Sicherheitsproblem im Ilchschript?
    (Das man auch als Gast trotzdem noch Shoutboxeinträge schreiben kann obwohl es gesperrt ist?) Kann man bisherige Poster identifizieren?
    Im welchen Abschnitt der Datenbank muss ich genau suchen?

    Bin für eine Hilfe dankbar!


    verwendete ilchClan Version: 1.1

    EDIT1:

    okay aus der Datenbank konnte ich schon was finden:

    INSERT INTO `ic1_shoutbox` VALUES (ZAHL, 'Nickname', 'xxtext'xx);

    Kann man die Shoutbox so updaten das in der Datenbank dahinter die IP abgespeichert wird, vielleicht mit der Uhrzeit sogar noch? Wäre wirklich super!

    Trotzdem ist es fraglich wie Gäste etwas in der Shoutbox schreiben können, obwohl es gesperrt ist. Ich bezweifle immernoch das ein User "Nickname" hinschreibt und so ein Mist postet!


    Zuletzt modifiziert von der rang am 03.04.2008 - 14:21:08
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Gerni Mitglied
    Registriert seit
    10.08.2006
    Beiträge
    874
    Beitragswertungen
    0 Beitragspunkte
    das Problem hatte ich auch. Geh mal auf Mairu´s Seite und hole dir die Shoutbox mit Zeit und anschließend schauste ins Forum bei ihm, dort steht die Lösung wie du die Shoutbox ändern musst ^^ Wenn du nen Link brauchst, sag bescheid
    kleinere geänderte Module für Ilch auf unserer HP: externer Link
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    der rang Mitglied
    Registriert seit
    03.04.2008
    Beiträge
    9
    Beitragswertungen
    0 Beitragspunkte
    ich nehme auch gerne einen Link lächeln

    Ein Bsp wo es bereits angewandt wird ist auch nicht verkehrt^^

    Okay.
    also er hat wohl das gleiche Problem!!!!

    externer Link

    Ich bekomme leider genau den gleichen Mist!!! (siehe Shoutbox)


    Zuletzt modifiziert von der rang am 03.04.2008 - 15:59:42
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Gerni Mitglied
    Registriert seit
    10.08.2006
    Beiträge
    874
    Beitragswertungen
    0 Beitragspunkte
    also bei mir auf der HP habe ich es so geändert, weil auch immer ein Nickname gespammt hat: externer Link

    hier der Link zum Downloaden:
    externer Link

    hier der Link zum Forum mit der Änderung :
    externer Link


    seid dem ich das so geändert habe, hatte ich kein gespamme mehr ^^

    Edit: Mairu hat die Shoutbox ab Gast freigeschaltet, da ist es kein wunder, dass er gespamme hat, ich denke er wird es bald auch ändern ^^


    Zuletzt modifiziert von Gerni am 03.04.2008 - 16:06:22
    kleinere geänderte Module für Ilch auf unserer HP: externer Link
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    der rang Mitglied
    Registriert seit
    03.04.2008
    Beiträge
    9
    Beitragswertungen
    0 Beitragspunkte
    jetzt steht zwar die Uhrzeit da, aber dadurch hat sich das Spammen gelegt? Ergibt eigentlich keinen Sinn!
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Gerni Mitglied
    Registriert seit
    10.08.2006
    Beiträge
    874
    Beitragswertungen
    0 Beitragspunkte
    ließt du eigentlich meine Posts genau???

    du musst in der Shoutbox noch was ändern.... siehe Link zum Forum vom Mairu...
    kleinere geänderte Module für Ilch auf unserer HP: externer Link
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    der rang Mitglied
    Registriert seit
    03.04.2008
    Beiträge
    9
    Beitragswertungen
    0 Beitragspunkte
    na okay,

    dort ist aber auch nicht genau erklärt was verändert wurde. Da muss man erst in den Code schauen und sich sein Teil denken.

    Okay dann mach ich das mal!

    EDIT1:

    Soll man es so machen?

    if ( !empty($_POST['shoutbox_submit']) AND chk_antispam ('shoutbox')) {
    $shoutbox_nickname = escape($_POST['shoutbox_nickname'],'string');
    $shoutbox_nickname = substr($shoutbox_nickname, 0, 15);
    $shoutbox_textarea = escape($_POST['shoutbox_textarea'],'textarea');
    $shoutbox_textarea = preg_replace("/[.?(url|b|i|u|img|code|quote)[^]]*?]/i","",$shoutbox_textarea);
    $shoutbox_textarea = strip_tags($shoutbox_textarea);
    if ( !empty($shoutbox_nickname) AND !empty($shoutbox_textarea) ) {
    db_query('INSERT INTO `prefix_shoutbox` (`nickname`,`textarea`) VALUES ( "'.$shoutbox_nickname.'" , "'.$shoutbox_textarea.'" ) ' );
    if (has_right($allgAr['sb_recht'])){
    }
    }

    EDIT2:

    Das mit dem Leerzeichen kann ich jedoch auch nicht erkennen. In der History fehlt leider das besagte Leerzeichen was du selber beheben konntest. Ich erkenn den Fehler nicht. Mir fehlen dafür die Kenntnisse.


    Zuletzt modifiziert von der rang am 03.04.2008 - 17:32:02
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Gerni Mitglied
    Registriert seit
    10.08.2006
    Beiträge
    874
    Beitragswertungen
    0 Beitragspunkte
    hier der komplette Code der Shoutbox.php:
    <?php
    #   Copyright by Manuel
    #   Support www.ilch.de
    
    defined ('main') or die ( 'no direct access' );
    
      if ( loggedin() ) {
        $shoutbox_VALUE_name = $_SESSION['authname'];
      } else {
        $shoutbox_VALUE_name = 'Nickname';
      }
    
      if (has_right($allgAr['sb_recht'])){
      if ( !empty($_POST['shoutbox_submit']) AND chk_antispam ('shoutbox')) {
    		$shoutbox_nickname = escape($_POST['shoutbox_nickname'],'string');
        $shoutbox_nickname = loggedin() ? $_SESSION['authname'] : substr($shoutbox_nickname, 0, 15);
    	  $shoutbox_textarea = escape($_POST['shoutbox_textarea'],'textarea');
    		$shoutbox_textarea = preg_replace("/\[.?(url|b|i|u|img|code|quote)[^\]]*?\]/i","",$shoutbox_textarea);
    		$shoutbox_textarea = strip_tags($shoutbox_textarea);
        if ( !empty($shoutbox_nickname) AND !empty($shoutbox_textarea) ) {
    	    db_query('INSERT INTO `prefix_shoutbox` (`nickname`,`textarea`,`time`) VALUES ( "'.$shoutbox_nickname.'" , "'.$shoutbox_textarea.'", '.time().' ) ' );
    	  }
      }
      echo '<form action="index.php" method="POST">';
      echo '<input type="text" size="15" name="shoutbox_nickname" value="'.$shoutbox_VALUE_name.'" onFocus="if (value == \''.$shoutbox_VALUE_name.'\') {value = \'\'}" onBlur="if (value == \'\') {value = \''.$shoutbox_VALUE_name.'\'}" maxlength="15">';
      echo '<br /><textarea style="width: 80%" cols="15" rows="2" name="shoutbox_textarea"></textarea><br />';
    	echo get_antispam ('shoutbox', 0);
      echo '<input type="submit" value="'.$lang['formsub'].'" name="shoutbox_submit">';
    	echo '</form>';
      }
      echo '<table width="90%" class="border" cellpadding="2" cellspacing="1" border="0">';
      $erg = db_query('SELECT * FROM `prefix_shoutbox` ORDER BY id DESC LIMIT '.(is_numeric($allgAr['sb_limit'])?$allgAr['sb_limit']:5));
    	$class = 'Cnorm';
      while ($row = db_fetch_object($erg) ) {
    	  $class = ( $class == 'Cmite' ? 'Cnorm' : 'Cmite' );
    	  $time = is_null($row->time) ? '<br />' : '<br /><em style="font-size:0.9em;">'.date('d.m - H:i',$row->time).' Uhr</em><br />';
        echo '<tr class="'.$class.'"><td><b>'.$row->nickname.':</b>'.$time.preg_replace( '/([^\s]{'.$allgAr['sb_maxwordlength'].'})(?=[^\s])/', "$1\n", $row->textarea).'</td></tr>';
      }
      echo '</table><a class="box" href="index.php?shoutbox">'.$lang['archiv'].'</a>';
    
    ?>
    kleinere geänderte Module für Ilch auf unserer HP: externer Link
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    der rang Mitglied
    Registriert seit
    03.04.2008
    Beiträge
    9
    Beitragswertungen
    0 Beitragspunkte
    okay,

    somit ist das mit dem Rechten sicherlich behoben. Zumindest ist nun der Code eingefügt.
    Trotzdem ist in dem Archiv kein Leerzeichen dazugekommen. Uhrzeit und der Text sind direkt aneinander.

    Als nächstes möchte ich gern eine Frage anhängen. Lässt sich die IP für die MYSQL-Datenbank speichern? Irgendwie muss dies ja gehen. Sie brauch nicht für die Mitgleider zu sehen sein. Aber in der Datenbank wäre es schon nicht schlecht.

    So lässt sich dann wenigstens eine Gemeinsamkeit erkennen und man kann die IP's sperren.
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Gerni Mitglied
    Registriert seit
    10.08.2006
    Beiträge
    874
    Beitragswertungen
    0 Beitragspunkte
    mhm.. wundert mich gerade mit dem Archiv... schreib mal den Code von der contents/shoutbox.php hier rein, dann vergleiche ich es mit meinem...

    das mit der IP. verwende mal SuFu da gibts glaub ich schon ne Lösung...

    Edit nen Link zur HP wäre vielleicht auch mal net schlecht..

    Zuletzt modifiziert von Gerni am 03.04.2008 - 19:58:20
    kleinere geänderte Module für Ilch auf unserer HP: externer Link
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    der rang Mitglied
    Registriert seit
    03.04.2008
    Beiträge
    9
    Beitragswertungen
    0 Beitragspunkte
    ich mach die Seite leider auch nur für jemand anderes. Er möchte nicht das die Page veröffentlicht wird... warum auch immer...

    <?php
    #   Copyright by: Manuel
    #   Support: www.ilch.de
    
    defined ('main') or die ( 'no direct access' );
    
      $title = $allgAr['title'].' :: Shoutbox '.$lang['archiv'];
      $hmenu = 'Shoutbox '.$lang['archiv'];
      $design = new design ( $title , $hmenu );
      $design->header();
    
    if (is_admin() AND $menu->get(1) == 'install') {
        if (db_num_rows(db_query("SHOW COLUMNS FROM `prefix_shoutbox` LIKE 'time'")) == 0) {
            $erg = db_query("ALTER TABLE `prefix_shoutbox` ADD `time` INT(11) NULL");
            echo '<b>Installation:</b> '.($erg?'erfolgreich':'fehlgeschlagen').'<br /><br />';
        } else {
            echo 'Installation wurde bereits ausgeführt.<br /><br />';
        }
        echo '<a href="index.php?shoutbox">zum Archiv</a> | <a href="index.php">zur Startseite</a><br />';
        $design->footer(1);
    }
    
    if (is_siteadmin()) {
      # delete
      if ($menu->getA(1) == 'd' AND is_numeric($menu->getE(1))) {
        db_query("DELETE FROM prefix_shoutbox WHERE id = ".$menu->getE(1));
      }
      # delete all
      if ($menu->get(1) == 'delall') {
        if (is_numeric($menu->get(2))) {
          $anz = db_result(db_query("SELECT COUNT(*) FROM `prefix_shoutbox`"),0) - $menu->get(2);
          if ($anz > 0) {
            db_query("DELETE FROM `prefix_shoutbox` LIMIT $anz");
            }
          }
        else { db_query("DELETE FROM `prefix_shoutbox`"); }
      }
    }
    
    echo '<script type="text/javascript">
      function del() {
        if (anz = prompt("Wieviele Einträge sollen erhalten bleiben?\n(Es werden die zuletzt geschriebenen erhalten)", "0")) {
          if (anz >= 0) { window.location.href = "index.php?shoutbox-delall-"+anz; }
          else alert("Du musst eine Zahl größer gleich 0 eingeben");
        }
      }
    </script>';
    
    $class = 'Cnorm';
    echo '<table width="100%" align="center" class="border" cellpadding="2" cellspacing="1" border="0"><tr class="Chead"><td><b>Shoutbox '.$lang['archiv'].'</b></td></tr>';
    $erg = db_query('SELECT * FROM `prefix_shoutbox` ORDER BY id DESC');
    while ($row = db_fetch_assoc($erg) ) {
     $class = ( $class == 'Cmite' ? 'Cnorm' : 'Cmite' );
      echo '<tr class="'.$class.'"><td>';
      if ( is_siteadmin() ) {
    	  echo '<a href="index.php?shoutbox-d'.$row['id'].'"><img src="include/images/icons/del.gif" alt="'.$lang['delete'].'" title="'.$lang['delete'].'"></a>&nbsp;';
    	}
    	$time = is_null($row['time']) ? '' : '<em>'.date('d.m.Y - H:i',$row['time']).' Uhr</em>';
    	echo '<b>'.$row['nickname'].':</b> '.$time.preg_replace( '/([^\s]{'.$allgAr['sb_maxwordlength'].'})(?=[^\s])/', "$1\n", $row['textarea']).'</td></tr>';
    }
    echo '</table>';
    if (is_siteadmin()) {
      echo '<a href="javascript:del();">'.$lang['clearshoutbox'].'</a>';
    }
    $design->footer();
    ?>


    EDIT1:

    In der Form das die IP nur in der Datenbank abgelegt wird gibts nicht. Da gibts aber auch ein Bug. Hab es bereits getestet. Die üblichen Spammer "hintergehen" auch diese Methode. Man hat somit wieder keinen Anhaltspunkt.


    Zuletzt modifiziert von der rang am 03.04.2008 - 21:25:16
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Gerni Mitglied
    Registriert seit
    10.08.2006
    Beiträge
    874
    Beitragswertungen
    0 Beitragspunkte
    ach ich depp, jetzt fällt es mir wieder ein.
    in der Zeile:
    $time = is_null($row['time']) ? '' : '<em>'.date('d.m.Y - H:i',$row['time']).' Uhr</em>';

    machst du einfach zwischen uhr und </em> ein leerzeichen rein...

    Edit: dass mit der IP ist sowieso sinnlos... denn die IP muss nicht wirklich die richtige IP von demjenigen sein.... es gibt dafür nette Programme...


    Zuletzt modifiziert von Gerni am 04.04.2008 - 05:38:04
    kleinere geänderte Module für Ilch auf unserer HP: externer Link
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    der rang Mitglied
    Registriert seit
    03.04.2008
    Beiträge
    9
    Beitragswertungen
    0 Beitragspunkte
    okay danke, ich werde das mit dem Code gleich mal testen. Und so sinnlos finde ich das gar nicht mit der IP. Es sind immer 2 RZ's von diversen Roots.. oder dazugemieteten IP's. Jedenfalls konnte ich schon die Quelle stark einschränken. So sinnlos mit den IP's wäre es somit nicht.

    Hab bereits die ersten 3 Blocks der 2 IP's geblockt. Theoretisch könnte ich nur die ersten 2 nehmen... weiß dann aber nicht genau inwiefern ich andere Besucher damit einschränke!

    Hin oder her, für ein Tipp bin ich sehr dankbar!

    EDIT1:

    Ja danke! das hat geholfen! ich hab zwar vermutet das ich das getan bereits probiert hätte... aber okay! Das Problem wäre erstmal behoben! Danke!


    Zuletzt modifiziert von der rang am 04.04.2008 - 12:54:05
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten