#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 , 9 years ago
comment:2 by , 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 , 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ä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 , 9 years ago
Besser die Ursache für das Problem beheben, anstatt einfach nur den Zugriff verschleiern!
comment:5 by , 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:8 by , 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?
comment:9 by , 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 , 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 , 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 , 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:14 by , 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 , 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 , 9 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
comment:17 by , 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.

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.