Modify

Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#1049 closed Bug/Fehler (fixed)

Shop steht auf Offline, Login nicht mehr möglich

Reported by: Ronald Parcinski Owned by: somebody
Priority: hoch Milestone: modified-shop-2.0.2.1
Component: Shop Version: 2.0.0.0
Keywords: Cc:
Blocked By: Blocking:

Description

Wenn man sich mehrmals mit falschen Daten einloggt, kommt man nicht mehr ich den Shop.

Vorschlag:

Eine neue Datei login_shop.php mit Unterstützung der Capcha Funktionen.

Evtl sollte auch noch eine Erweiterung für die "Passwort vergessen" Funktion eingebaut werden.
Die Dateien für die "Passwort vergessen /neu vergeben" so umbauen das sie auch bei Shop Offline funktionieren

Attachments (0)

Change History (25)

comment:1 by Torsten Riemer, 9 years ago

Ich dachte genau für diesen Fall wurde die login_admin.php bereits um "reset_login" erweitert?

Ich würde hier keine weitere "login_shop.php" erstellen, sondern die vorhandene "login_admin.php" direkt erweitern.

comment:2 by Ronald Parcinski, 9 years ago

Die login_admin wurde als reines Not-Login konzipiert.
Dementsprechned werden auch nur die nötigsten Funktionen geladen.

Durch die neuen Einstellmöglichkeiten bei Shop Offline kann man den Shop auch für bestimmte Kundengruppen freigeben.
Wenn man das macht und ein Kunde gibt falsche Zugangsdaten ein ist er ausgesperrt! Selbst als Shop Admin hat man keine Möglichkiet diesen Kunden wieder freizuschalten.

Die login_admin.php Datei würde ich sogar so umbenennen wie das Admin Verzeichnis. Damit niemand unbefugtes diese Datei einfach aufrufen kann.

comment:3 by Torsten Riemer, 9 years ago

Dann muss aber auch die "modified.sql" entsprechend angepasst werden:

INSERT INTO shop_configuration (configuration_id, configuration_key, configuration_value) VALUES(NULL, 'SHOP_OFFLINE_MSG', '<p style="text-align: center;"><span style="font-size: large;"><font face="Arial">Unser Shop ist aufgrund von Wartungsarbeiten im Moment nicht erreichbar.<br /></font><font face="Arial">Bitte besuchen Sie uns zu einem sp&auml;teren Zeitpunkt noch einmal.<br /><br /><br /><br /></font></span><font><font><a href="login_admin.php"><font color="#808080">Login</font></a></font></font><span style="font-size: large;"><font face="Arial"><br /></font></span></p>');

Dort wird noch die "login_admin.php" adressiert.

Eine "update.sql" natürlich äquivalent dazu.

comment:4 by h-h-h, 9 years ago

Besser die Ursache für das Problem beheben, anstatt einfach nur den Zugriff verschleiern!

comment:5 by Ronald Parcinski, 9 years ago

Man kann das auch nur mit einer Datei lösen, wenn auch der Dateiname login_admin etwas unglücklich ist.

Neue login_admin.php
mit Parameteraufruf (Admin Verzeichnisname) wird die bisherige login_admin includet

ohne oder falscher Parameter
includen einer login_shop.php mit Session und Captcha Unterstützung aber ohne die repair Funktionen

Beispiel für die neue login_admin.php

@ini_set('display_errors', false);
error_reporting(0);

define('_MODIFIED_SHOP_LOGIN',1);

$directory = dirname(__FILE__);

$dir_admin = '';

foreach (new DirectoryIterator($directory) as $fileInfo) {
    if(!$fileInfo->isDot() && $fileInfo->isDir() && is_file($fileInfo->getFilename().'/check_update.php')) {
      $dir_admin = $fileInfo->getFilename();
      break;
    }
}


if (isset($_GET['code']) && $_GET['code'] == $dir_admin) {
  include('includes/login_admin.php');
} else {
  include('includes/login_shop.php');
}

comment:6 by Torsten Riemer, 9 years ago

Finde ich nicht so glücklich diese Lösung.

comment:7 by Ronald Parcinski, 9 years ago

Was ist das Problem?

comment:8 by anonymous, 9 years ago

entschuldigt bitte, ich habe zu schnell geantwortet.

Admin-Login: Sollte so bleiben und darf bei falschen Admin-Zugangsdaten keinen kritischen Prozess durchführen!

Wenn man sich mehrmals mit falschen Daten einloggt, kommt man nicht mehr ich den Shop.

Wie kommt es dazu?

Version 0, edited 9 years ago by anonymous (next)

comment:9 by Ronald Parcinski, 9 years ago

Das kommt durch die neuen Sicherheitsfeatures.

Nach 2-mal falschen Einloggen wird ein Capchta Code notwendig, ohne diesem ist kein Einloggen mehr möglich.

comment:10 by h-h-h, 9 years ago

Dann muss die Captcha Abfrage auf der login_admin.php in dem Fall angezeigt werden und das Problem sollte gelöst sein.

comment:11 by Torsten Riemer, 9 years ago

Das Problem ist, dass wir dort absichtlich nicht die application_top.php eingebunden haben, womit die Session gestartet wird, da falls es im Shop zu Fehlern kommt, dann soll die Wartungsmodus-Seite davon nicht auch noch betroffen sein. Denn eine Wartungsmodus-Seite, die nicht angezeigt wird oder eine Fehlermeldung bringt oder gar nur eine weisse Seite, weil im Shop gerade ein Modul fehlerhaft verbaut wurde und den Shop lahmlegt, ist ja nicht so sinnvoll.

Gerhard schaut mal morgen, ob er die Session auch irgendwie anders starten kann, damit er dort das Captcha einbinden kann.

comment:12 by h-h-h, 9 years ago

Danke für die ausführliche Rückmeldung, das ist richtig und hatte ich nicht auf dem Schirm.

<?php
if ($use_captcha) {
  ob_start();
    session_start();

    require_once (DIR_FS_EXTERNAL.'captcha/php-captcha.inc.php');
    $aFonts = glob(DIR_WS_INCLUDES.'fonts/*.TTF');
    $oPhpCaptcha = new PhpCaptcha($aFonts, MODULE_CAPTCHA_WIDTH, MODULE_CAPTCHA_HEIGHT);
    $oPhpCaptcha->UseColour((MODULE_CAPTCHA_USE_COLOR == 'True' ? true : false));
    $oPhpCaptcha->DisplayShadow((MODULE_CAPTCHA_USE_SHADOW == 'True' ? true : false));
    $oPhpCaptcha->SetCharSet(array('A','B','C','D','E','F','G','H','K','M','N','P','Q','R','S','T','U','V','W','X','Y','Z','2','3','4','5','6','8','9'));
    $oPhpCaptcha->SetNumChars((int)MODULE_CAPTCHA_CODE_LENGTH);
    $oPhpCaptcha->SetNumLines((int)MODULE_CAPTCHA_NUM_LINES);
    $oPhpCaptcha->SetMinFontSize((int)MODULE_CAPTCHA_MIN_FONT);
    $oPhpCaptcha->SetMaxFontSize((int)MODULE_CAPTCHA_MAX_FONT);
    $oPhpCaptcha->SetBackgroundColors(MODULE_CAPTCHA_BACKGROUND_RGB);
    $oPhpCaptcha->SetLinesColors(MODULE_CAPTCHA_LINES_RGB);
    $oPhpCaptcha->SetCharsColors(MODULE_CAPTCHA_CHARS_RGB);
    $oPhpCaptcha->Create(); 

    $captcha_img = ob_get_contents();
  ob_end_clean();

  echo '<img src="data:image/jpeg;base64,' . base64_encode($captcha_img) . '" alt="Captcha">';

  echo '<input name="vvcode" type="text">';

  $vvcode = DIR_FS_CATALOG . $_SESSION['vvcode'] . DB_SERVER_PASSWORD;
  echo '<input name="vvencrypted" type="hidden" value="'.(new validpass)->encrypt_password($vvcode)

}
?>

und hier der Code um dies in der selben Datei zu prüfen:

<?php
if ($use_captcha && isset($_POST['vvcode']) && isset($_POST['vvencrypted'])) {
  $vvcode = DIR_FS_CATALOG . $_POST['vvcode'] . DB_SERVER_PASSWORD;
  if ((new validpass)->validate_password($vvcode, $_POST['vvencrypted'])) {
    // :-)
  }
}
?>

comment:13 by Ronald Parcinski, 9 years ago

Resolution: fixed
Status: newclosed

In 10322:

fix #819, #1049

comment:14 by h-h-h, 9 years ago

Habt ihr das auch einmal getestet?

Ich habe mir den Code der Umsetzung einmal durchgelesen -- KISS!
/includes/ ist auch das falsche Verzeichnis für die Dateien.

Nach 2-mal falschen Einloggen wird ein Capchta Code notwendig, ohne diesem ist kein Einloggen mehr möglich.

http://demo.modified-shop.org/trunk/login_admin.php?show_error=all

Das sollte jetzt mit den Parametern an der URL immer noch möglich sein oder übersehe ich etwas?

comment:15 by h-h-h, 9 years ago

brute force repair for login_admin r10286 ff

Das bringt nichts, wenn dies an die Session gebunden wird

Über die login_admin.php?error=all mit Parametern erscheint es auch gleich komplett ohne Captcha auf Admins beschränkt.

Damit bringt der Bruteforce Schutz über die login.php auch nichts, wenn einfach die login_admin.php verwendet werden kann.

Hier könnte die Zeit für den nächsten Loginversuch einfach Schrittweise erhöht werden oder login_admin in dem Adminorder landen.

comment:16 by h-h-h, 9 years ago

Resolution: fixed
Status: closedreopened

comment:17 by Ronald Parcinski, 9 years ago

login_admin.php mit Aufruf ohne oder mit falschen Parametern:

includen von includes/login_shop.php mit Catcha Unterstützung

login_admin mit Parameter repair oder show_error:

includen von includes/login_admin.php

Die Parameter werden nur verarbeitet wenn die Einloggdaten gültig sind.

comment:18 by Gerhard Waldemair, 9 years ago

Resolution: fixed
Status: reopenedclosed

In 10360:

fix #1049

comment:19 by Gerhard Waldemair, 9 years ago

In 10361:

fix #1049

comment:20 by Gerhard Waldemair, 9 years ago

In 10362:

fix #1049

comment:21 by Gerhard Waldemair, 9 years ago

In 10363:

fix #1049

comment:22 by Ronald Parcinski, 9 years ago

In 10328:

Revised r10322 (fix #819, #1049) - add fallback for missing template file

comment:23 by Ronald Parcinski, 9 years ago

In 10329:

Revised r10328 (Revised r10322 (fix #819, #1049) - add fallback for missing template file) - add missing action parameter

comment:24 by Ronald Parcinski, 9 years ago

In 10331:

fix r10328 (Revised r10322 (fix #819, #1049) - add fallback for missing template file)

comment:25 by Torsten Riemer, 9 years ago

In 10334:

fix r10328 (Revised r10322 (fix #819, #1049) - add fallback for missing template file)

Modify Ticket

Action
as closed The owner will remain somebody.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.