Author Topic: [MOD] IP Sperre für eine Zeit XX Sekunden  (Read 26986 times)

0 Members and 1 Guest are viewing this topic.

rinaldos

  • Guest
[MOD] IP Sperre für eine Zeit XX Sekunden
« on: July 19, 2009, 03:54:21 PM »
[MOD] IP Sperre für eine Zeit XX Sekunden
Dieser MOD soll dein System etwas mehr absichern. Kaum eine Website ist gegen BRUTE FORCE Angriffe geschützt. Mit dieser Erweiterung kannst du festlegen, nach wievielen fehlerhaften LOGINS und wie lange die IP Adresse des vermeintlichen Angreifers gesperrt bleiben soll.
Die Sperre bezieht sich nur auf die Webseite. Solltest du SSH oder FTP aktiviert haben, hat dies keinen einfluss auf die Sperre.

Wenn die Anzahl X überschritten ist, wird dem vermeintlichen Angreifer nur noch eine Seite angezeigt, welche Ihn daraufhin weist, wann er sich wieder normal einloggen kann. Sobald eine Adresse gesperrt ist, bekommt der ADMIN eine EMAIL (sofern im ACP aktiviert).

Der Counter wird nach erst wieder zurückgesetzt, wenn die Zeit X abgelaufen ist. Diese Zeit kannst du im ACP frei definieren. Die Zeit wird dort in Sekunden angegeben.
        1 min = 60 Sekunden
        10 min = 600 Sekunden
        1 Stunde = 3600 Sekunden
        1 Tag = 86400 Sekunden
        usw.
Sinnvolle Werte sind sicherlich ein Wert zwischen 5 - 10 Login Versuchen und eine Sperre zwischen 10 - 60 Minuten.
Default Werte im ACP:
Logins: 10
Sperre: 600 (10 Minuten)
Email: deaktiviert

Wenn noch drei Versuche übrig sind, erscheint ein Java POPUP und ziegt die verbleibenden Versuche an.

Dieser MOD hat mich auf die Idee der Absicherung gebracht:
http://www.4homepages.de/forum/index.php?topic=25322.0

Nicht zu verwechseln mit [MOD] Ban v1.7
http://www.4homepages.de/forum/index.php?topic=7066.0

DEMO http://4images_1.rinaldos.homeip.net
Benutze einen Benutzernamen und ein Passwort deiner Wahl. Du hast zwei Versuche. Der Zugriff auf die Webseite ist dann für Dich 120 Sekunden gesperrt

zu ändernde Dateien: 8
neue Dateien: 1

Schritt 1
öffne /admin/setting.php
finde

 show_form_footer
($lang['save_changes'], ""2);


füge darüber ein

  show_table_separator
($setting_group[xx], 2"setting_group_xx");
  
show_setting_row("mod_block_count");
  
show_setting_row("mod_block_time");
  
show_setting_row("mod_block_email""radio");


xx = Die Fortlaufende Nummer deiner SETTINGS

Schritt 2
öffne /includes/constants.php
finde

define
('USERS_TABLE'$table_prefix.'users');


füge darüber oder darunter ein:

// MOD BLOCK IP ADRESSE
define('USERS_LOGIN_COUNT_TABLE'$table_prefix.'users_login_count');
// MOD BLOCK IP ADRESSE


Schritt 3
öffne /includes/page_header.php
finde

if (!defined('ROOT_PATH')) {
  die(
"Security violation");
}


füge darunter ein:

// MOD BLOCK IP
reset_invalid_login();

if ((
get_invalid_login($count_login) >= $config['mod_block_count']) && ($user_info['user_level'] != ADMIN)) {
    
$IP $_SERVER['REMOTE_ADDR'];
    
$sql "SELECT count, time 
            FROM "
.USERS_LOGIN_COUNT_TABLE.
            WHERE IP = '"
.$IP."'";
    
$result $site_db->query_firstrow($sql);
    
$count $result['count'];
    
$time $result['time'];
    
$current_time time();
    
$time_retry $config['mod_block_time'];
    if ((
$current_time <= $time) && ($user_info['user_level'] != ADMIN)) {
      
$main_template "login_fail";
      
$login_time format_date($config['date_format']." ".$config['time_format'],$time);
      
$site_template->register_vars(array(
      
"invalid_login_german" => $lang['invalid_login_german'],
      
"invalid_login_english" => $lang['invalid_login_english'],
      
"login_time" => $login_time,
    ));
      
$site_template->print_template($site_template->parse_template($main_template));
      exit;
    }
}
// MOD BLOCK IP


Schritt 4
öffne /lang/deutsch/main.php
füge vor ?> folgende zeilen ein

// MOD BLOCK IP ADRESSE
$lang['invalid_login_text'] = "Es hat sich jemand mit einem falschen Benutzernamen / Passwort versucht einzuloggen. Sollte dieser Versuch mehrfach sein, wird die Webseite gerade gehackt";
$lang['invalid_login_emailsubject'] = "Benutzer login failed";
$lang['invalid_login_german'] = "Diese <font color=\"#FF0000\">Webseite</font> ist f&uuml;r Dich vorr&uuml;bergehend geschlossen. Du hast dich zuoft mit einem falschen Benutzernamen oder einem falschen Passwort versucht anzumelden.Das System sperrt automatisch f&uuml;r eine gewisse Zeit deine IP Adresse. Du kannst es wieder versuchen am / um:<br> ";
$lang['invalid_login_english'] = "Sorry, but the <font color=\"#FF0000\">Website</font> is temporarily closed for you. Due to many LOGIN FAILURES please revisit this Website again at: <br> ";
$lang['invalid_login_1'] = "Du hattest bisher ";
$lang['invalid_login_2'] = "fehlgeschlagene Versuche gehabt. Dir verbleiben noch ";
$lang['invalid_login_3'] = "Versuch(e)";
// MOD BLOCK IP ADRESSE


Schritt 5
öffne /lang/deutsch/admin.php
füge vor ?> folgende zeilen ein

// MOD BLOCK IP ADRESSE
$setting_group[xx]="INVALID LOGINS";
$setting['mod_block_count'] = "Anzahl der Versuche zum einloggen";
$setting['mod_block_time'] = "Wie lange bleibt die IP Adresse gesperrt?<br> Zeit ist in Sekunden einzutragen";
$setting['mod_block_email'] = "Per EMAIl Admin benachrichtigen?";
// MOD BLOCK IP ADRESSE


xx = Deine letzte SEETTINGS GROUP + 1

Schritt 6
erstelle eine Datei im Verzeichnis lang/Deine Sprache/email/login_email.html
füge folgenden Code in diese Datei ein
Code: [Select]
Hallo

{text}
----------
Benutzer: {user_name}
Versuch: {login_date}
Anzahl: {login_counts}
IP-Adresse: {IP}
Browser: {Browser}
----------

Schritt 7 am 15.02.2010 geändert
öffne /includes/functions.php
füge vor ?> folgende Zeilen ein

// MOD BLOCK IP
function get_invalid_login($count_login) {
 global 
$site_db$config$lang;
  
$IP $_SERVER['REMOTE_ADDR'];
  
$current_time time();
  
// $time_retry = $config['mod_block_time'];
  // $retry_time = $current_time + $time_retry;
  
  
$sql1 "SELECT COUNT(IP) AS ips 
           FROM "
.USERS_LOGIN_COUNT_TABLE.
           WHERE IP = '"
.$IP."'";
  
$result1 $site_db->query_firstrow($sql1);
  
$num_ips $result1['ips'];
  if (
$num_ips == "1"){
     
//  if ($current_time >= $retry_time){
           
$sql "SELECT count FROM ".USERS_LOGIN_COUNT_TABLE.
                   WHERE ip = '"
.$IP."'";
           
$result$site_db->query_firstrow($sql);
           
$count_login $result['count'];
     
//  }
    
}
return 
$count_login;
}

function 
reset_invalid_login() {
global 
$site_db$config$lang;
  
$IP $_SERVER['REMOTE_ADDR'];
  
$current_time time();
  
$time_retry $config['mod_block_time'];
  
$retry_time $current_time $time_retry;
  
  
$sql1 "SELECT COUNT(IP) AS ips 
           FROM "
.USERS_LOGIN_COUNT_TABLE."";
  
$result1 $site_db->query_firstrow($sql1);
  
$num_ips $result1['ips'];
  if (
$num_ips >= "1"){
      
// changed if ($current_time >= $retry_time){
       
if ($current_time <= $retry_time){
           
$sql "DELETE FROM ".USERS_LOGIN_COUNT_TABLE.
                  WHERE time <= '"
.$current_time."' ";
           
$site_db->query($sql);
       }
    }
}

function 
count_invalid_login($user_name) {
    global 
$site_db$site_sess$user_info$config$lang$script_url;
    
$IP $_SERVER['REMOTE_ADDR'];
    
$current_time time();
    
$time_retry $config['mod_block_time'];
    
$retry_time $current_time $time_retry;
    
$sql1 "SELECT COUNT(IP) AS ips 
             FROM "
.USERS_LOGIN_COUNT_TABLE.
            WHERE IP = '"
.$IP."'";
    
$result1 $site_db->query_firstrow($sql1);
    
$num_ips $result1['ips'];
    if (
$num_ips == "0"){
        
$sql "INSERT INTO ".USERS_LOGIN_COUNT_TABLE."
              (IP, count, time)
              VALUES
              ('"
.$IP."', '1', '".$retry_time."')";
      
$site_db->query($sql);
      
$count "1";
      
$count_rest $config['mod_block_count'] - $count;
    }else {
           
$sql "UPDATE ".USERS_LOGIN_COUNT_TABLE." SET
                  count = count + 1, 
                  time = '"
.$retry_time."'
                  WHERE IP = '"
.$IP."'";
           
$site_db->query($sql);
           
$sql "SELECT count FROM ".USERS_LOGIN_COUNT_TABLE.
                  WHERE IP = '"
.$IP."'";
           
$result $site_db->query_firstrow($sql);
           
$count $result['count'];
           
$count_rest $config['mod_block_count'] - $count;
     }

   if (
$count_rest <= "3"){
      echo 
"<script language='javascript'>alert('".$lang['invalid_login_1']." ".$count." ".$lang['invalid_login_2']." ".$count_rest." ".$lang['invalid_login_3']."')</script>";
   }

  
$htaccess_email_send $config['mod_block_email'];
  
$count_login_retry $config['mod_block_count'];
  
  if ((
$htaccess_email_send == 1) && ($count >= $count_login_retry)) {
      
$current_time time();
      include_once(
ROOT_PATH.'includes/email.php'); 
      
$text $lang['invalid_login_text'];
      
$user_password trim($HTTP_POST_VARS['user_password']);
      
$site_email = new Email(); 
      
$site_email->set_to($config['site_email'], $config['site_name']); 
      
$site_email->set_from($config['site_email'], $config['site_name']); 
      
$site_email->set_subject($lang['invalid_login_emailsubject']); 
    
      
$site_email->register_vars(array( 
        
"user_name" => stripslashes($user_name),
        
"login_date" => format_date($config['date_format']." ".$config['time_format'], $current_time),
        
"login_counts" => $count,
        
"site_name" => $config['site_name'],
        
"text" => $text,
        
"IP" => $_SERVER['REMOTE_ADDR'],
        
"Browser" => $_SERVER['HTTP_USER_AGENT']
         )); 
        
$site_email->set_body("login_email"$config['language_dir']); 
        
$site_email->send_email();
        
$site_email->reset();
  }
    return 
$count;
}


Schritt 8
erstelle in Deinem Template Verzeichnis folgende Datei
login_fail.html
füge folgenden Code ein

Code: [Select]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<head>
<title>BLOCKED IP</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-15" />
<meta name="language" content="german,deutsch,DE,AT,CH,S">
</head>
<table width="90%" align="center" border="0"cellspacing="0" cellpadding="0">
 <tr>
  <td align="center">
   <table border="0" width="640" align="center" id="table1" style="border-collapse: collapse">
    <tr>
     <td width="100%" height="480" align="center">
     <h2>{invalid_login_german} {login_time}</h2>
     <h2>------------------</h2>
     <h2>{invalid_login_english} {login_time}</h2>
     <p>&nbsp;</p>
     </td>
    </tr>
   </table>
  </td>
 </tr>
</table>
</body>
</html>

Schritt 9
öffne login.php
finde

if ($error) {
  
$main_template "error";
  include(
ROOT_PATH.'includes/page_header.php');
  
show_error_page($error);
}


ersetze mit

if ($error) {
  
$main_template "error";
  include(
ROOT_PATH.'includes/page_header.php');
  
count_invalid_login($user_name);
  
show_error_page($error);
}


Schritt 10
Führe den INSTALLER aus dem zip aus.



Das sollte es gewesen sein :-)
« Last Edit: February 15, 2010, 07:39:43 PM by rinaldos »

Offline Sebas Bonito

  • Sr. Member
  • ****
  • Posts: 271
  • Sebas Bonito
    • View Profile
Re: [MOD] IP Sperre für eine Zeit XX Sekunden
« Reply #1 on: July 19, 2009, 06:01:50 PM »
Sehr gut! Danke dafür...

Diese MOD müsste eigentlich ein Pflicht- und Standardwerkzeug von 4images sein  :!:

Update: Mir fällt gerad ein und auf, dass der Ansatz noch ergänzt werden müsste. Du sprichst die BruteForce Attacks an, und da werden zig-Tausende IPs verwendet. Von daher sollte man nicht nur die IP sperren, sondern (zusätzlich) auch den kompletten Account.

Offline KurtW

  • 4images Guru
  • *******
  • Posts: 2.778
    • View Profile
    • Malediven-Bilder ~~Dreams~~
Re: [MOD] IP Sperre für eine Zeit XX Sekunden
« Reply #2 on: July 19, 2009, 06:12:30 PM »
Hallo,
toller Mod, gefallt mir gut.
Kleine Änderung wäre noch gut, um normalen vergesslichen Usern keine Überrachung zu bescheren.

z.B.
3 Versuche frei
 - Versuch 1 falsch: Sie haben noch 2 Versuche frei
 - Versuch 2 falsch: Sie haben noch 1 Versuch frei
 - Versuch 3 falsch: Deine Meldung der Sperre für xx Minuten

Gruß
Kurt

rinaldos

  • Guest
Re: [MOD] IP Sperre für eine Zeit XX Sekunden
« Reply #3 on: July 19, 2009, 06:18:25 PM »
Hallo Kurt,
das ist sicherlich eine sinnvolle Erweiterung :-) Man kennt ja das Problem mit den Passwörtern ....Ich werde mal schauen was ich noch machen kann :-)

@Schnick und Schnack
Wenn ich den Account sperre, dann kommt der normale Nutzer nicht mehr rein. Folglich müsste eine Neuaktivierung dem Nutzer zugeschickt werden. Wenn ich dann Spass hätte würde ich schnell alle Accounts einer Webseite sperren :-) Daher kommt eine Sperre des Accounts nicht in Frage. Auch wenn bei einer Bruteforce Attacke viele IP Adressen genutzt werden, ist dies wenigstens ein kleiner Schutz gegen Script Kiddies.
Meines Erachtens, machen das pfiffige Hacker besser. Die gehen nicht über die Webseite, sondern eher auf Betriebssystemebene. Also so würde ich es machen. Da wäre dein SSH oder FTP viel lukrativer :-)
Bei mir als Bsp, ist der ssh Port serienmäßig deaktiviert. Wenn er aber trotzdem offen sein sollte, sperrt meine Firewall automatisch die IP Adresse. Die wird dann erst nach einer Stunde wieder freigegeben. Dies ist eigentlich nur eine kleine Abwandlung der Funktion meiner Firewall .....

LG
Ingo
« Last Edit: July 19, 2009, 06:40:17 PM by rinaldos »

Offline Jan-Lukas

  • Addicted member
  • ******
  • Posts: 1.289
    • View Profile
    • Discover the New World of Kindersurprise
Re: [MOD] IP Sperre für eine Zeit XX Sekunden
« Reply #4 on: July 19, 2009, 06:36:23 PM »
Affengeil, und mit Kurts Vorschlag ein Muss für jede Galerie.

Quote
Dieser MOD hat mich auf die Idee der Absicherung gebracht:
http://www.4homepages.de/forum/index.php?topic=25322.0

War ich ja auch mal für was gut  :lol:

LG

Danke Harald




rinaldos

  • Guest
Re: [MOD] IP Sperre für eine Zeit XX Sekunden
« Reply #5 on: July 19, 2009, 07:59:00 PM »
@All
ich habe Schritt 4 und Schritt 7 erneuert. Mit der Änderung erfolgt ein JAVA POPUP und zeigt die verbleibenden Versuche an. Aufgrund der LANG Files kann jeder seinen eigenen Text einfügen :-)

Auf der Demo Seite sind nun zwei Versuche nötig :-)

Gruß
Ingo

Offline Bommel

  • Full Member
  • ***
  • Posts: 114
    • View Profile
Re: [MOD] IP Sperre für eine Zeit XX Sekunden
« Reply #6 on: January 09, 2010, 08:16:51 PM »
Aus diesem Beitrag entfernt: http://www.4homepages.de/forum/index.php?topic=8542.msg144436#msg144436 , da ich denke, dass er besser hierher gehört.

Hallo allerseits,

bei der Suchfunktion taucht jetzt, nachdem Einbau dieses Mods dieser Fehler auf:

Quote
Notice: Undefined variable: config in /home/WH4448059/wwwroot/includes/functions.php on line 2046 Notice: Undefined variable: count_login in /home/WH4448059/wwwroot/includes/page_header.php on line 30 Notice: Undefined variable: config in /home/WH4448059/wwwroot/includes/functions.php on line 2023

Der MOD funktioniert aber ohne Probleme. Da ich nun etwas unerfahren bin, was solche Fehlerbehebungen anbelangt - kann mir irgendjemand von den Profis hier bitte helfen.

Hier noch die betreffenden Zeilen aus der Fehlermeldung:

functions.php
Zeile 2046
Code: [Select]
  $time_retry = $config['mod_block_time'];Zeile 2023
Code: [Select]
  $time_retry = $config['mod_block_time'];
page_header.php
Zeile 30-51
Code: [Select]
if ((get_invalid_login($count_login) >= $config['mod_block_count']) && ($user_info['user_level'] != ADMIN)) {
    $IP = $_SERVER['REMOTE_ADDR'];
    $sql = "SELECT count, time
            FROM ".USERS_LOGIN_COUNT_TABLE."
            WHERE IP = '".$IP."'";
    $result = $site_db->query_firstrow($sql);
    $count = $result['count'];
    $time = $result['time'];
    $current_time = time();
    $time_retry = $config['mod_block_time'];
    if (($current_time <= $time) && ($user_info['user_level'] != ADMIN)) {
      $main_template = "login_fail";
      $login_time = format_date($config['date_format']." ".$config['time_format'],$time);
      $site_template->register_vars(array(
      "invalid_login_german" => $lang['invalid_login_german'],
      "invalid_login_english" => $lang['invalid_login_english'],
      "login_time" => $login_time,
    ));
      $site_template->print_template($site_template->parse_template($main_template));
      exit;
    }
}

Scheinbar handelt es sich hier um die Variable "mod_block_time". Wo muss ich ansetzen, um diesen Fehler zu beheben?

Freundliche Grüße, Bommel

Nachtrag:

Habe jetzt diesen MOD noch einmal entfernt. Die Fehlermeldung taucht nicht mehr auf. Entweder:

  • habe ich beim Einpflegen dieses MODs geschludert,
  • oder hier passt wirklich irgendetwas nicht zusammen.

Ich nehme an, dass ersteres der Fall ist. Ob dem so ist werde ich gleich sehen, wenn ich diesen MOD noch einmal neu integriere.

Freundliche Grüße, Bommel

Nachtrag:

Also, es scheint nicht so, dass ich Fehler beim Einpflegen dieses MODs gemacht habe. Die Fehlermeldung taucht erneut bei der Such-Funktion auf. Da ich ungern auf diesen MOD verzichten möchte, suche ich jetzt hier bei euch einen Denkanstoss.

Freundliche Grüße, Bommel
« Last Edit: January 09, 2010, 11:17:50 PM by Bommel »
Freundliche Grüße, Bommel

Nicht die Geduld mit mir verlieren, ich bin noch am Lernen./ Do not lose the patience with me, I am still in the learning. ;)

rinaldos

  • Guest
Re: [MOD] IP Sperre für eine Zeit XX Sekunden
« Reply #7 on: January 10, 2010, 03:25:06 PM »
Hi Bommel,
deaktiviere doch mal in der global.php
Code: [Select]
error_reporting(E_ERROR | E_WARNING | E_PARSE);
error_reporting(E_ALL);

indem du ein // vor die Zeilen setzt. Das die Meldungen da sind, weiss ich, habe aber noch keinen Weg gefunden die zu deaktivieren. Wenn ich die Variablen vorher mal mit 0 oder anders definiere, funktioniert die Modifikation leider nicht mehr .....

Der Fehler ist noch ein kleiner BUG in diesem MOD. In einem Produktivsystem solltest du sowieso solche Fehlermeldungen deaktivieren. Das bietet dem Hacker eine noch geringere Angriffsmöglichkeit, da er nicht sieht ob seine Aktionen Fehler oder so bringen.


Sobald ich einen Weg gefunden habe dieses zu deaktivieren werde ich es hier so schnell als möglich posten :-)

Gruß
Ingo

Offline KurtW

  • 4images Guru
  • *******
  • Posts: 2.778
    • View Profile
    • Malediven-Bilder ~~Dreams~~
Re: [MOD] IP Sperre für eine Zeit XX Sekunden
« Reply #8 on: January 10, 2010, 04:02:19 PM »
Hi,

euch fehlt jeweils die "$config" und "$lang" in der includes/functions.php
Code: [Select]
global $site_db, $config, $lang;

Kurt

rinaldos

  • Guest
Re: [MOD] IP Sperre für eine Zeit XX Sekunden
« Reply #9 on: January 10, 2010, 06:03:21 PM »
@KurtW
Danke für den Tip, ich habe den Thread oben aktualisiert. Schön dich nochmal zu lesen :-)

LG
Ingo

Offline Bommel

  • Full Member
  • ***
  • Posts: 114
    • View Profile
Re: [MOD] IP Sperre für eine Zeit XX Sekunden
« Reply #10 on: January 10, 2010, 09:53:59 PM »
Hallo Rinaldos & KurtW,

Hi Bommel,
deaktiviere doch mal in der global.php....
Das hatte ich bereits schon gemacht. Fand ich irgendwo bei meiner Suche im Forum. Jedoch hatte ich dabei kein so gutes Gefühl, da ich noch im Begriff bin, meine Galerie aufzubauen. Da ich nicht so viel Erfahrung damit habe, sah ich letztendlich die Fehlermeldungen als wertvolle Lernhilfe an. So habe ich sie wieder aktiviert.
...Der Fehler ist noch ein kleiner BUG in diesem MOD. In einem Produktivsystem solltest du sowieso solche Fehlermeldungen deaktivieren. Das bietet dem Hacker eine noch geringere Angriffsmöglichkeit, da er nicht sieht ob seine Aktionen Fehler oder so bringen...
Das spielt eh keine Rolle. Meine Galerie ist nur ein rein privates System, mithilfe der ich meine Familie, Verwandschaft usw. mit unseren Fotos versorge. Dann gibts hoffentlich endlich Ruhe. ;)

Die Lösung von KurtW hat zumindest einen Teil der Probleme beseitigt. Geblieben ist noch die folgende Meldung:

Quote
Notice: Undefined variable: count_login in /home/WH4448059/wwwroot/includes/page_header.php on line 30

Die Zeile lautet:

Code: [Select]
if ((get_invalid_login($count_login) >= $config['mod_block_count']) && ($user_info['user_level'] != ADMIN)) {
Habe mir das nochmal angeschaut, aber im Moment bin ich zu müde dafür. Mein Kind hat mich heute bis in den Abend auf Trab gehalten. Kein Wunder bei dem Schnee.  :D

Danke für eure Hilfe.

Freundliche Grüße, Bommel
Freundliche Grüße, Bommel

Nicht die Geduld mit mir verlieren, ich bin noch am Lernen./ Do not lose the patience with me, I am still in the learning. ;)

Offline shadowhunter

  • Full Member
  • ***
  • Posts: 114
    • View Profile
    • Fotogalerie & Fotocommunity scluzern.com
Re: [MOD] IP Sperre für eine Zeit XX Sekunden
« Reply #11 on: February 10, 2010, 05:59:26 PM »
Hallo!

Erstmals, super MOD, Danke!

Ich habe noch ein kleines Problem:
Wenn man nach x-Versuchen die maximale Anzahl der Versuche erreicht hat, dann kommt die "login_fail.html" Datei nicht, sondern einfach die "error"-Steite (Login nicht erfolgreich). Danach funktioniert die Galerie ganz normal; jedoch keine Sperrung.
Die Javascript-Meldung erscheint auch bei den 3 letzten Versuchen. Sonst funktioniert der MOD richtig. Das E-Mail wird auch einwandfrei verschickt.
Ich habe alles so gemacht, wie es hier beschrieben ist.
Irgendetwas in beim eingefügten Code in der Datei "page_header.php" funktioniert nicht ganz bei mir...

Könnte mir bitte jemand weiterhelfen. Danke im Voraus.
Grüsse


rinaldos

  • Guest
Re: [MOD] IP Sperre für eine Zeit XX Sekunden
« Reply #12 on: February 10, 2010, 07:45:14 PM »
Hi,
wenn ich das richtig sehen, laufen Deine Seiten in einer Art iframe (frameset). Da kann es ja nicht gehen, da die Seiten ja über das Frame aktiv sind, und erst später durch 4images gesteuert werden........

Gruß

P.S. Test war ich

Offline shadowhunter

  • Full Member
  • ***
  • Posts: 114
    • View Profile
    • Fotogalerie & Fotocommunity scluzern.com
Re: [MOD] IP Sperre für eine Zeit XX Sekunden
« Reply #13 on: February 12, 2010, 09:42:37 PM »
Danke für den Post!
Das mit dem Frameset ist so - meine Seite besitzt Frames.
Jedoch habe ich das Frameset einmal "ausgeschaltet" (-> 4images alleine) und danach diesen MOD wieder getestet: Leider ohne Erfolg...
Der Fehler kann somit nicht am Frameset liegen!
Was könnte noch den Fehler sein? Irgendetwas im page_header.php?
Danke im Voraus.
Gruss

Offline shadowhunter

  • Full Member
  • ***
  • Posts: 114
    • View Profile
    • Fotogalerie & Fotocommunity scluzern.com
Re: [MOD] IP Sperre für eine Zeit XX Sekunden
« Reply #14 on: February 15, 2010, 06:44:12 PM »
Hallo!
Betreffend dem beschriebenen Problem vom Beitrag #11:

Ich habe deinen Code durchdacht und nach meinen Kenntnissen funktioniert der folgende Code (von "functions.php")

Code: [Select]
function get_invalid_login($count_login) {
 global $site_db, $config, $lang;
  $IP = $_SERVER['REMOTE_ADDR'];
  $current_time = time();
  $time_retry = $config['mod_block_time'];
  $retry_time = $current_time + $time_retry;
  
  $sql1 = "SELECT COUNT(IP) AS ips
           FROM ".USERS_LOGIN_COUNT_TABLE."
           WHERE IP = '".$IP."'";
  $result1 = $site_db->query_firstrow($sql1);
  $num_ips = $result1['ips'];
  if ($num_ips == "1"){
       if ($current_time >= $retry_time){
           $sql = "SELECT count FROM ".USERS_LOGIN_COUNT_TABLE."
                   WHERE ip = '".$IP."'";
           $result= $site_db->query_firstrow($sql);
           $count_login = $result['count'];
       }
    }
return $count_login;
}
bei der Zeile (14)
Code: [Select]
if ($current_time >= $retry_time){nicht!

Nach folgender Änderung funktioniert es auch bei mir:
Code: [Select]
...
       //if ($current_time >= $retry_time){
           $sql = "SELECT count FROM ".USERS_LOGIN_COUNT_TABLE."
                   WHERE ip = '".$IP."'";
           $result= $site_db->query_firstrow($sql);
           $count_login = $result['count'];
       //}
...

Weil die Bedingung $current_time >= $retry_time nie eintrifft, da $current_time = time(); $retry_time = $current_time + $time_retry;


Zusätzlich noch eine Bemerkung zum Code function reset_invalid_login() { in "functions.php":
Die Zeile if ($current_time >= $retry_time){ ist ebenfalls unlogisch und das Löschen von Einträgen in der db funktioniert auch bei mir nicht!


Was meint ihr dazu? Seit ihr der gleichen Meinung?
Gruss