Ankündigung

Einklappen
Keine Ankündigung bisher.

Sperren von ips über admin menü

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sperren von ips über admin menü

    liebe php.de member ich bins ma wieder :P

    ich hab folgendes problem

    ich will in mein admin script ne funktion einbaun
    wen jemand sich einloggt wird es gelogt über das script kann ich dan die nutzerdaten von diesem user sehn + die ip von der er sich einloggt jetzt will ich ein button neben jeder ip "IP Sperren" das die ip dan automatisch in die htaccess eingetragen wird und somit nichtmehr auf die seite zugreifen kann
    ich weiß nicht wie ich das umsetzen soll

    Admin Script
    PHP-Code:
    <?php
    include('config.php');

    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <meta http-equiv="Content-Language" content="de" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Admin Script</title>
    <style type="text/css">
    .style1 {
        border-width: 0;
    }
    .style2 {
        background-color: #CCFFCC;
    }
    .style3 {
        text-align: center;
    }
    .style4 {
        border: 1px solid #FFFFFF;
        text-align: left;
        white-space: normal;
    }
    .style5 {
        border: 1px solid #FFFFFF;
    }
    .style6 {
        border: 1px solid #FFFFFF;
        text-align: center;
        white-space: normal;
    }
    </style>
    </head>

    <body style="background-color: #CCFFCC">

    <p class="style3"><span class="style2"><strong>Admin Script</strong></span></p>
    <form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
    <table width="60%" height="117" align="center" class="style1" style="width: 80%">
        <tr>
            <td style="width: 40%">User auswhlen:</td>
            <td style="width: 20%">
    &nbsp; <select name="mails">
    <option value="1" selected="selected">Alle</option>

    </select></td>
        </tr>
        <tr>
            <td style="width: 20%">&nbsp;Anzahl(pro seite):</td>
            <td style="width: 20%">
                <input name="anzahl" type="text" size="5" />
            </td>
        </tr>
        <tr>
            <td colspan="2" class="style3">
                <input name="go" type="submit" value="Senden" />
                <input name="del" type="submit" value="Leeren" />
            </td>
        </tr>
    </table>
    </form>


    <div class="style3">
    <p>
    <strong>Ergebnis der mysql-Query || Ausgabe</strong>
    </p>
    </div>
    <p>&nbsp;</p>
    <table width="88%" height="31" align="center" class="style5" style="width: 70%">
    <tr>
            <td class="style6" style="width: 30%; height: 23px;">Username</td>
            <td class="style6" style="width: 25; height: 23px;">Passwort</td>
            <td class="style6" style="width: 20%; height: 23px;">Login</td>
            <td class="style6" style="width: 25%; height: 23px;">IP</td>
        </tr>
    <?
    error_reporting(E_ALL);

    mysql_connect($host,$user,$pass) OR die(mysql_error());
    mysql_select_db($dbase) OR die(mysql_error('zugriff verweigert!'));
      if(isset($_POST['del'])) {
        $sql2 = "TRUNCATE TABLE `accounts`";
        $result = mysql_query($sql2) OR die(mysql_error());
          echo 
      "<tr>
            <td class='style4' style='width: 100%'>ALLE LOGS GELSCHT</td>
        </tr>";
      }
    if(isset($_POST['go'])) {
    switch ($_POST['mails']) {
      case 1:
      if(isset($_POST['anzahl']) && $_POST['anzahl'] != '') {
      $beid = intval($_POST['anzahl']);
      } else  {
      $beid = "100";
      }
      
      $sql = "SELECT * FROM `accounts` ORDER BY `accounts`.`typ` ASC LIMIT 0 , $beid;";
      $result = mysql_query($sql) OR die(mysql_error());
      while($row = mysql_fetch_assoc($result))  {
      $username = utf8_encode($row['username']);
      $passwd   = utf8_encode($row['passwort']);
      $ip  = utf8_encode($row['ip']);
      $type   = nl2br(utf8_encode($row['typ']));
      echo 
      "<tr>
            <td class='style4' style='width: 30%'>$username</td>
            <td class='style4' style='width: 25%'>$passwd</td>
            <td class='style4' style='width: 20%'>$ip</td>
            <td class='style4' style='width: 25%'>$type</td>
        </tr>";
      }
        
      
        break;
        
      case 2:
      if(isset($_POST['anzahl']) && $_POST['anzahl'] != '') {
      $beid = intval($_POST['anzahl']);
      } else  {
      $beid = "100";
      }
      
      $sql = "SELECT * FROM `accounts` ORDER BY `accounts`.`typ` ASC LIMIT 0 , $beid;";
      $result = mysql_query($sql) OR die(mysql_error());
      while($row = mysql_fetch_assoc($result))  {
      $username = utf8_encode($row['username']);
      $passwd   = utf8_encode($row['passwort']);
        $ip  = utf8_encode($row['ip']);
      $type   = nl2br(utf8_encode($row['typ']));
      echo 
      "<tr>
            <td class='style4' style='width: 30%'>$username</td>
            <td class='style4' style='width: 25%'>$passwd</td>
            <td class='style4' style='width: 20%'>$ip</td>
            <td class='style4' style='width: 25%'>$type</td>
        </tr>";
      }
      
        break;
        
    }    
    }
    ?>

    </table>

    <p class="style3"><strong>Script written by mikeJ |
    <a href=""></a></strong></p>


    </body>

    </html>
    und hier ist die htaccess

    Code:
    Order Deny, Allow
    Allow from all
    Deny from xxx.xxx.xx.xx 
    Deny from xxx.xxx.xx.xx
    ich bitte um hilfe da ich nach stundenlangen googlen nichmehr weiter weiß

    möchte mich schonmal für die hilfe die etv. kommt bedanken

    und noch nen schönen Montag abend

    mikeJ

  • #2
    Hi,

    die Daten in die .htaccess einzutragen ist Blödsinn. Zu viele ungeschützte Schreibzugriffe auf ein- und dieselbe Datei. Du solltest entweder (sofern möglich) die Adresse in die iptables des Systems eintragen oder direkt per PHP sperren. Sprich: die Anfrage wird per PHP nur weiter verarbeitet, wenn die Adresse nicht gesperrt ist. Hat den Vorteil, dass du einfach eine bestimmte Meldung für den Nutzer anzeigen kannst, den Nachteil, dass PHP jedoch immer ausgeführt wird, weshalb dieses Vorgehen nicht zu empfehlen ist, um Bruteforce-Attacken zu unterbinden. Da sollten dann wirklich die iptables ran.
    Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

    Kommentar


    • #3
      wie ich an die iptables komm weiß ich ehrlich gesagt nicht und die 1 möglichkeit würd bei nicht viel bringen da die nutzer auf eine rein html page kommen und die schon nicht sehen dürfen sollen wen ihre ip gesperrt ist

      Kommentar


      • #4
        Das verstehe ich nun wiederum nicht. Wie sollen die „nicht sehen dürfen sollen“, wenn sie gesperrt sind und was hindert dich daran, aus der HTML-Datei eine PHP-Datei zu machen, die am Anfang einmal prüft, ob der Nutzer auf die Seite darf oder nicht?
        Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

        Kommentar


        • #5
          ja die ips die gesperrt sind sollen diese Seite nicht sehn soll diese forbidden Meldung kommen wie bei nem htaccess
          und der einzigste Grund warum ich aus der html keine php mach ist das mir die nötigen Kenntnisse dazu fehlen ich hab für dieses Admin Script schon 2 Wochen gebraucht
          aber du hast recht wen ich daraus eine php mach währ zwar das coden "schwerer" aber ich könnt dann alles über das Admin Menü steuern
          mir fehlt dann halt noch das mit den ips und weiß jetzt grad auch gar nicht wie ich das ohne die htaccess Datei zu bearbeiten umsetzen soll bzw.
          ich denk mir da die ips ja sowieso in der db gespeichert werden sollte sie bei jedem aufrufen der Seite überprüft werden ob sie in der white oder black list ist wen blacklist dan weiterleiten auf eine andere seite wie google oder so
          weißt du da eine möglichkeit wie ich das umsetzen kann?

          Kommentar


          • #6
            Zitat von mikeJ Beitrag anzeigen
            ich denk mir da die ips ja sowieso in der db gespeichert werden sollte sie bei jedem aufrufen der Seite überprüft werden ob sie in der white oder black list ist wen blacklist dan weiterleiten auf eine andere seite wie google oder so
            weißt du da eine möglichkeit wie ich das umsetzen kann?
            Absolut korrekt - wo hakts denn?

            Lass dir mal nach einem Request das $_SERVER Array ausgeben, dort stehen interessante Informationen drin, z.B. die IP des Aufrufers.

            Und durchsuch das Board nochmal genauer, dieses Thema wurde hier bereits mehrfach diskutiert.
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              die ip wird mir ja schon angezeigt und auch in der db bei dem jeweiligen user gespeichert fehlt nur noch ein request der die ip mit der schwarzen liste in der db vergleicht und den user dan abweist

              Kommentar


              • #8
                Zitat von mikeJ Beitrag anzeigen
                die ip wird mir ja schon angezeigt und auch in der db bei dem jeweiligen user gespeichert fehlt nur noch ein request der die ip mit der schwarzen liste in der db vergleicht und den user dan abweist
                Na dann mach dich mal an die Arbeit
                "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

                Kommentar


                • #9
                  Ok, wenn die IP bekannt ist in der DB leg Dir doch eine weiter Tabelle "ip-blacklist" an.
                  Dort kannst Du dann, die IP die Du blacklisten willst, einfach eintragen.
                  Also beim aktuellem Benutzer ein "select" und ein "insert" in "ip_blacklist".

                  Zum speichern der IP in der DB solltest Du Dir die MySQL funktionen INET_ATON() und INET_NTOA() anschauen.

                  Du solltest bei Deinem Vorhaben aber auch so Sachen wie Proxies und Firmen-Netze bedenken bzw. dynamische IPs. Womit ich sagen will Du kannst damit schnell viele Nutzer ungewollt ausschließen bzw. Deine Sperre kann durch eine einfache Neueinwahl schnell umgangen werden.
                  AFFE ist nur im Dezimalsystem ein Palindrom.

                  Kommentar


                  • #10
                    das speichern der ip .. hab ich alles schon auch die tabelle für die blacklist
                    mir fehlt jetzt eig nur noch der befehl das die ip ausgelesen, überprüft und dann falls blacklisted auf google weitergeleitet wird

                    ich werd nich die komplette ip sondern nur die ersten beiden zeillen also xx.xx sperren da hat ja jeder nur 1-5 wen überhaupt soweit ich das weiß

                    Kommentar


                    • #11
                      und sobald meine IP gesperrt ist, mache ich einen reconnect, bekomme vom provider eine neue IP und komme wieder ganz normal drauf, während ein anderer User, der zufällig nun meine freigewordene IP bekommt aber ansonsten nichts verbrochen hat wird ausgesperrt.

                      Kommentar


                      • #12
                        ersten beiden zeillen also xx.xx sperren
                        Wenn Du nur die ersten beiden Oktette speicherst und dagegen vergleichst schließt Du ca. 65 Tausend Adressen aus.

                        Dann leg Dir lieber noch ein Feld an in das die "range" reinkommt.... das wäre viel sauberer.

                        mir fehlt jetzt eig nur noch der befehl das die ip ausgelesen, überprüft und dann falls blacklisted auf google weitergeleitet wird
                        Auslesen ...SELECT
                        oder hier mit Beispielen:
                        PHP: PDOStatement->fetch - Manual

                        Vergleichen ....Where

                        Weiterleiten ... header

                        Oder hast Du einen spezielles Problem ? Dann müsstest Du mal Deine Tabelle und Deinen Code posten
                        AFFE ist nur im Dezimalsystem ein Palindrom.

                        Kommentar


                        • #13
                          So wie ich das sehe, möchtest du einen Benutzer sperren. Warum machst du das nicht direkt anstatt den unzuverlässigen Weg über die temporäre IP des Benutzers?

                          Kommentar

                          Lädt...
                          X