Login Block

Anwendungen für Webseiten. Künstliche Intelligenz verwenden.
Volker
Moderator
Moderator
Beiträge: 3113
Registriert: Sa 12. Dez 2020, 22:35

Login Block

Beitrag von Volker »

Hallo zusammen :D

Jetzt die Königsklasse ;)

Ein einfacher Login Block der es in sich hat :D
https://www.niederastroth.de/00login/
https://www.niederastroth.de/00login/vn ... itung.html

admin und passwort:login123

Dort könnt ihr dann belieb viele User anlegen die nach login dann zu members.php weitergeleitet werden.
Das einzige an Code was man noch per Hand eingeben muss ist die Session in der Members.php.

DA muss vor HTML das hier rein:

Code: Alles auswählen

<?php
session_start();
if (empty($_SESSION['vn_login_user'])) {
    header('Location: index.html');
    exit;
}
?>
Probiert es aus ;)



@Tommy: Du kannst den natürlich gerne haben zum ausgiebig testen ;)
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 9127
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Login Block

Beitrag von Tommy Herrmann »

Das ist doch aber exakt wie meine Anwendung hier - nur die Passwort-Routine ist etwas anders - oder? Bei mir schreibt man halt die User mit ihrem Passwort direkt in eine PHP-Datei. Das sieht zwar simpler aus - erfüllt aber genau den gleichen Zweck.

https://www.mobirise-tutorials.com/Mitglieder.php

Ich prüfe das etwas später aber dennoch :tu:
Volker
Moderator
Moderator
Beiträge: 3113
Registriert: Sa 12. Dez 2020, 22:35

Re: Login Block

Beitrag von Volker »

Naja exakt :confused:

Das sind jetzt 3 Mobirise Blöcke Tommy,
DA wird nix mehr mit Notepad oder im HTML Code gemacht.
Alles wird in Mobirise eingestellt. Lediglich die Session muss in jede geschützte Seite und auf php umgestellt werden.

Also eigentlich wird alles nur noch in Mobirise gemacht ;)

Teste es mal in Ruhe
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 9127
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Login Block

Beitrag von Tommy Herrmann »

Habe irgendwie meinen Admin-Zugang falsch eingegeben - jedenfalls komme ich nicht rein.

Was muss ich jetzt machen?
Volker
Moderator
Moderator
Beiträge: 3113
Registriert: Sa 12. Dez 2020, 22:35

Re: Login Block

Beitrag von Volker »

Lass das php script hier mal laufen ;)

Code: Alles auswählen

<?php
// =====================================================
// VN Login – Reset Script
// Löscht die User-Datei → Setup-Formular erscheint wieder
// WICHTIG: Nach Benutzung sofort löschen!
// =====================================================

$scriptPassword = 'reset123'; // Hier eigenes Passwort setzen

if (empty($_GET['pw']) || $_GET['pw'] !== $scriptPassword) {
    http_response_code(403);
    die('<h2>Zugriff verweigert.</h2><p>Aufruf: reset-login.php?pw=reset123</p>');
}

$siteKey   = md5($_SERVER['HTTP_HOST'] ?? 'local');
$usersFile = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'vn_login_users_' . $siteKey . '.json';

$deleted = false;
if (file_exists($usersFile)) {
    $deleted = unlink($usersFile);
}
?><!DOCTYPE html>
<html lang="de">
<head><meta charset="utf-8"><title>VN Login Reset</title>
<style>body{font-family:Arial;background:#0f0f0f;color:#fff;display:flex;align-items:center;justify-content:center;height:100vh;margin:0}
.box{background:#1a1a1a;padding:2.5rem;border-radius:14px;text-align:center;max-width:400px}
h2{color:#1d9e75;margin:0 0 1rem}.ok{color:#1d9e75}.err{color:#e74c3c}
p{color:#888;font-size:.9rem;margin:.5rem 0}code{background:#111;color:#1d9e75;padding:2px 8px;border-radius:4px}
</style></head>
<body><div class="box">
<h2>🔐 VN Login Reset</h2>
<?php if ($deleted): ?>
    <p class="ok">✓ User-Datei erfolgreich gelöscht!</p>
    <p>Das Erst-Setup-Formular erscheint jetzt beim nächsten Aufruf von <code>login.html</code></p>
<?php elseif (!file_exists($usersFile)): ?>
    <p class="ok">✓ Keine User-Datei gefunden – Setup läuft bereits neu.</p>
<?php else: ?>
    <p class="err">✗ Datei konnte nicht gelöscht werden.</p>
    <p>Datei: <code><?= htmlspecialchars($usersFile) ?></code></p>
<?php endif; ?>
<p style="margin-top:1.5rem;color:#e74c3c;font-size:.8rem">⚠️ Diese Datei jetzt sofort löschen!</p>
</div></body></html>
Löscht alles :D

Aufruf: deine domain/verzeichnis/reset-login.php?pw=reset123
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 9127
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Login Block

Beitrag von Tommy Herrmann »

Das ist große Scheiße.

Wieso ist der User Name "admin"? Den müsste man selbst wählen. Ich hatte keine Ahnung welchen Usernamen ich eingetragen haben soll - hatte ich ja auch nicht. Nur 2 x das Passwort.

Übrigens ChatGPT hat das natürlich auch gleich für mich erledigt mit dieser hinterhältigen Speicherung:

Code: Alles auswählen

<?php
declare(strict_types=1);

header('Content-Type: text/plain; charset=utf-8');

$siteKey   = md5($_SERVER['HTTP_HOST'] ?? 'local');
$usersFile = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'vn_login_users_' . $siteKey . '.json';

echo "Server-Host: " . ($_SERVER['HTTP_HOST'] ?? 'local') . PHP_EOL;
echo "User-Datei: " . $usersFile . PHP_EOL . PHP_EOL;

if (is_file($usersFile)) {
    if (unlink($usersFile)) {
        echo "OK: Login-Benutzerdatei wurde gelöscht." . PHP_EOL;
        echo "Du kannst jetzt das Setup erneut ausführen und ein neues Admin-Passwort vergeben." . PHP_EOL;
    } else {
        echo "FEHLER: Datei wurde gefunden, konnte aber nicht gelöscht werden." . PHP_EOL;
        echo "Bitte Rechte/Server-Konfiguration prüfen." . PHP_EOL;
    }
} else {
    echo "Hinweis: Es wurde keine Benutzerdatei gefunden." . PHP_EOL;
    echo "Vermutlich ist das Login bereits im Erst-Setup-Modus." . PHP_EOL;
}
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 9127
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Login Block

Beitrag von Tommy Herrmann »

es gibt noch weitere Mängel - ich melde mich dann ...
Volker
Moderator
Moderator
Beiträge: 3113
Registriert: Sa 12. Dez 2020, 22:35

Re: Login Block

Beitrag von Volker »

Ja gibs mir :D

Mängel ??? DA bin ich gespannt :D
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 9127
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Login Block

Beitrag von Tommy Herrmann »

OK - das habe ich schon mal verstanden:

Code: Alles auswählen

HTTP_HOST: www.mobirise-tutorials.com
MD5 SiteKey: 26f67********ecb7c4bfb
Temp-Verzeichnis: /tmp
Benutzerdatei: /tmp/vn_login_users_26f676*******************b7c4bfb.json
------------------------------------------------------------

{
    "admin": {
        "password": "******lrQMHgjN***********MDMbnt2Wr*******wEXiU.tHQftTwIq",
        "email": "",
        "status": "active",
        "created": "2026-07-04 09:33:28"
    },
    "tester": {
        "password": "$2y$********************CYuclwBYuCk5ZE2Il7tZvg9vUbD2B.jw5G8kGwiS",
        "email": "",
        "status": "active",
        "created": "2026-07-04 09:34:30"
    }
}


Du weißt aber auch, dass ein Aufruf mal mit www. oder ohne www. zu verschiedenen Login Dateien führt :eek:


Für eine kleine private Test-Anwendung ist das schon brauchbar, aber als „wirklich sicher“ würde ich diese Lösung so noch nicht bezeichnen.
Der wichtigste Punkt zuerst: Das Passwort selbst wird korrekt gehasht gespeichert:
password_hash($password, PASSWORD_BCRYPT)
Das ist grundsätzlich gut. Auch password_verify() ist dafür richtig. In der JSON-Datei steht also kein Klartextpasswort.
Trotzdem sehe ich einige Schwachstellen.
Was daran gut ist
Die Benutzerdatei liegt nicht direkt im Webverzeichnis, sondern im Server-Temp-Ordner:
sys_get_temp_dir()
Dadurch kann man sie normalerweise nicht einfach per Browser herunterladen. Außerdem wird das Passwort nicht entschlüsselbar gespeichert, sondern als Hash.
Für eine einfache Login-Verwaltung ist das schon besser als viele Bastellösungen.

Was problematisch ist:

Der Temp-Ordner ist kein besonders guter Dauer-Speicherort. Je nach Server kann /tmp irgendwann automatisch gelöscht werden. Dann wäre plötzlich wieder firstRun aktiv und jeder, der die Setup-Seite aufruft, könnte theoretisch einen neuen Admin anlegen.
Das ist aus meiner Sicht die größte Schwachstelle.
Problematisch ist auch diese Logik:
$firstRun = ($users === null);
Sobald die Datei fehlt oder kaputt ist, wird wieder Setup erlaubt. Das ist bequem, aber gefährlich.
Besser wäre: Das Setup sollte nach der ersten Einrichtung zusätzlich durch eine feste Sperre geschützt werden, zum Beispiel durch eine Datei im Webspace oder eine Konstante wie:
define('ALLOW_SETUP', false);
Nach der Einrichtung müsste man das manuell auf false setzen.
Weitere Schwachstellen
Es gibt keinen Schutz gegen viele Login-Versuche. Jemand könnte also sehr viele Passwörter ausprobieren. Mindestens eine kleine Sperre nach z.B. 5 Fehlversuchen wäre sinnvoll.
Außerdem sehe ich keinen CSRF-Schutz für Admin-Aktionen wie Benutzer löschen oder anlegen. Wenn du als Admin eingeloggt bist und eine manipulierte Seite besuchst, könnten theoretisch Aktionen ausgelöst werden, falls die Anwendung entsprechend eingebunden ist.
Auch die Session wird nicht besonders gehärtet. Vor einem Login wäre z.B. sinnvoll:
session_regenerate_id(true);
direkt nach erfolgreichem Login und Setup. Das schützt besser gegen Session-Fixation.
Meine Einschätzung
Für „Volker testet etwas, du testest mit, nicht öffentlich beworben“: okay, aber mit Vorsicht.
Für eine öffentliche Anwendung mit echten Benutzern: so noch nicht ausreichend sicher.
Ich würde mindestens diese Dinge ändern:
1. Benutzerdatei nicht in /tmp speichern, sondern in einen geschützten Ordner außerhalb des Webroots.
2. Setup nach der Einrichtung dauerhaft sperren.
3. Login-Versuche begrenzen.
4. session_regenerate_id(true) nach Login/Setup einbauen.
5. Admin-Aktionen mit CSRF-Token absichern.
6. JSON-Datei mit LOCK_EX speichern.
Besonders Punkt 1 und 2 würde ich unbedingt machen. Das Zurücksetzen über „Datei löschen“ ist praktisch, aber genau diese Bequemlichkeit ist sicherheitstechnisch heikel.
Volker
Moderator
Moderator
Beiträge: 3113
Registriert: Sa 12. Dez 2020, 22:35

Re: Login Block

Beitrag von Volker »

Ja die Tante Chat GPT :D

Also ich ändere einige Sachen aber

CSRF-Token → nur relevant wenn Admin auf bösen Seiten surft UND der Block öffentlich erreichbar ist. Für ein Hobby-Projekt mit einem einzigen Admin: vernachlässigbar
define('ALLOW_SETUP', false) → unnötig wenn Datei persistent im Webspace liegt - also quatsch ;)

/tmp/ wird geleertUsers jetzt in assets/vn-login/config/users.json – persistent, im WebspaceSetup immer auslösbarNur möglich wenn users.json nicht existiert – liegt persistent im WebspaceBrute-ForceNach 5 Fehlversuchen 15 Min gesperrt (IP-basiert, in config/bf_*.json)session_regenerate_idNach Login und Setup eingebautLOCK_EXAlle Datei-Schreibvorgänge gesichert

Ist nun ersetzt und im Download Ordner Tommy ;)
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 9127
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Login Block

Beitrag von Tommy Herrmann »

was muss ich nun tun um das zu ersetzen? Alle drei Kompoenten neu einbauen?
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 9127
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Login Block

Beitrag von Tommy Herrmann »

... aber warte - das bemängel ich auch noch:

> Die im Block-Werkzeug vom Login gesetzte Seite (vorgeschlagen) sollte dann aber auch nicht:

members.html

sondern

members.php

stehen, denn es muss ja eine PHP-Seite sein.


> Von der Seite "Passwort Ändern" gibt es keinen Link zurück auf z.B. die Seite Login oder zur geschützten Seite.

> Der Aufruf der geschützten Seite ohne Login erzeugt einen Fehler, es sollte dagegen auf die Login-Seite umgeleitet werden, genau wie nach dem Abmelden (Logout).


Hier ist meine zusätzliche Test- und Beispielseite:

https://www.mobirise-tutorials.com/VN-B ... mbers.html

Ihr könnt Euch zum Testen mit diesen Benutzer-Zugang einloggen (Groß- und Kleinschreibung beachten):

Benutzername: Tester
Passwort: tester

Aber ganz ehrlich - das ist alles recht modern gemacht - macht aber tatsächlich nichts anderes als meine alte Seite "Mitglieder". Der Einbau ist da auch kein bisschen schwieriger und auch schneller:

https://www.mobirise-tutorials.com/Mitglieder.php
Volker
Moderator
Moderator
Beiträge: 3113
Registriert: Sa 12. Dez 2020, 22:35

Re: Login Block

Beitrag von Volker »

Tommy Herrmann hat geschrieben: Sa 4. Jul 2026, 10:22 was muss ich nun tun um das zu ersetzen? Alle drei Kompoenten neu einbauen?
Ne alte vn login löschen - neu importieren und nur den block mit der anmeldung ersetzen. Die andren kannst so lassen
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 9127
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Login Block

Beitrag von Tommy Herrmann »

Schreibst Du mir nochmals, wenn der Download (vorläufig) endgültig ist. Dann installiere ich die Anwendung nochmals neu und ersetze nur den Block zum Login, wenn ich das korrekt verstanden habe.
Volker
Moderator
Moderator
Beiträge: 3113
Registriert: Sa 12. Dez 2020, 22:35

Re: Login Block

Beitrag von Volker »

Ja mach ich
Volker
Moderator
Moderator
Beiträge: 3113
Registriert: Sa 12. Dez 2020, 22:35

Re: Login Block

Beitrag von Volker »

Tommy Herrmann hat geschrieben: Sa 4. Jul 2026, 10:22
> Der Aufruf der geschützten Seite ohne Login erzeugt einen Fehler, es sollte dagegen auf die Login-Seite umgeleitet werden, genau wie nach dem Abmelden (Logout).
Kann nicht sein : https://www.niederastroth.de/00login/members.php

Geht immer zum Login - auch im Firerfox ;)
Volker
Moderator
Moderator
Beiträge: 3113
Registriert: Sa 12. Dez 2020, 22:35

Re: Login Block

Beitrag von Volker »

Tommy Herrmann hat geschrieben: Sa 4. Jul 2026, 10:22 ... aber warte - das bemängel ich auch noch:


> Von der Seite "Passwort Ändern" gibt es keinen Link zurück auf z.B. die Seite Login oder zur geschützten Seite.
Tommy das ist eine Testseite ;)
Da kannst ja einbauen was immer du willst - button zurück oder sonst wo hin ;)
Volker
Moderator
Moderator
Beiträge: 3113
Registriert: Sa 12. Dez 2020, 22:35

Re: Login Block

Beitrag von Volker »

Tommy Herrmann hat geschrieben: Sa 4. Jul 2026, 10:22 ... aber warte - das bemängel ich auch noch:

> Die im Block-Werkzeug vom Login gesetzte Seite (vorgeschlagen) sollte dann aber auch nicht:

members.html

sondern

members.php

stehen, denn es muss ja eine PHP-Seite sein.

Ändere ich noch - am Anfang wollte ich es in HMTL machen ;)
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 9127
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Login Block

Beitrag von Tommy Herrmann »

Doch. Klicke mal auf den Button "Geschützte Seite" - solange Du ausgeloogt bist:

https://www.mobirise-tutorials.com/VN-B ... mbers.html

oder eben so:

https://www.mobirise-tutorials.com/VN-B ... embers.php

... dann logge Dich ein und klicke dann auf den Button "Geschützte Seite".
Volker
Moderator
Moderator
Beiträge: 3113
Registriert: Sa 12. Dez 2020, 22:35

Re: Login Block

Beitrag von Volker »

Tommy Herrmann hat geschrieben: Sa 4. Jul 2026, 10:45 Doch. Klicke mal auf den Button "Geschützte Seite" - solange Du ausgeloogt bist:

https://www.mobirise-tutorials.com/VN-B ... mbers.html

oder eben so:

https://www.mobirise-tutorials.com/VN-B ... embers.php

... dann logge Dich ein und klicke dann auf den Button "Geschützte Seite".
Ändere ich auch noch ;)
Antworten

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], struggle, Volker und 5 Gäste