Das könnte dann wieder JEDER machen und es bringt keine Sicherheit - oder?
[VOTING] XH 1.6.10
Re: [VOTING] XH 1.6.10
Re: [VOTING] XH 1.6.10
Natürlich JEDER. Aber was willst Du mit einem selbst generiertem Passwort - Hash für meine Installation, wenn Du die Datei dann nicht hochladen kannst, weil Dir der FTP-Zugang fehlt.
Re: [VOTING] XH 1.6.10
Genau darum geht es ja die ganze Zeit. Ja, die jetzige downloadbare Testversion hat ein Zeitfenster von max. 5 min, vom Upload der setupControl.php an gerechnet. Nach erfolgtem PasswortSetup schliesst das Zeitfenster aber sofort, das Zeitfenster verkürzt sich also insgesamt auf wenige Sekunden. Nur bei Abbruch des Setup wird Setup erst nach 5 min wieder inaktiv.
Ja, aber auch nur per ftp, genauso wie bei meiner "sicheren Variante". Es bleibt dabei:
Ohne einen letzten Schritt per ftp bleibt immer ein Zeitfenster, denn was der Admin auf der Seite machen kann, kann jeder andere auch machen, solange das Passwort "test" ist oder Setup aktiv ist und der Angreifer das weiss.
Nur: Wie hoch ist die Wahrscheinlichkeit, dass eine Seite wenige Minuten nach Upload angegriffen wird?
Das Problem ist doch nur eine "vergessene Seite" mit Standard Passwort oder aktivem Setup. Das muss ausgeschlossen werden.
===========================
PS: Seit CMSimple den Admin im Backend mit einem grossen schwarz-gelben Hinweisfeld nervt, wenn das Passwort "test" ist, habe ich keine Seite mit Passwort "test" mehr gefunden
Re: [VOTING] XH 1.6.10
Stimmt, sorry! (Mir qualmt schon dor Kopp.)
Es scheint sich so langsam herauszukristallisieren, dass es bei dir wahrscheinlich wirklich die sicherste Methode ist.
Das dürfte wohl kaum jemand bestreiten.
Wenn man bedenkt, dass es fast 20 Jahre OHNE ging, dann scheint das was wir hier treiben, ziemlich abgefahren.
Ich favorisiere momentan ein Kombination aus verschiedenen Vorschlägen:
- Auslieferung mit "test" - wie bisher.
- Bei Erstaufruf der Site (eben solange "test" drinsteht): Passwort-Eingabemaske
- aus dem Passwort wird eine Datei erstellt und zum Download angeboten
- User muss diese Datei herunterladen und per FTP hochladen
- nach Upload => Addresse neu laden => es geht "normal" weiter
Vielleicht genügt es aber auch, nur Christophs Patch einzuführen
Wenn man bedenkt, wie andere Systeme das gemacht haben ... auf jeden Fall nicht besser.
Re: [VOTING] XH 1.6.10
Jetzt aber noch einmal die Frage:
Was ist daran besser, einen Download von wo auch immer zu generieren, den der User dann herunter- und wieder hochladen muss, als gleich eine Datei auf dem Webserver zu erzeugen, die dann in config.php umbenannt werden muss?
Für beide Varianten ist ftp notwendig.
Nach einigem Nachdenken: Keine schlechte Idee, nur würde ich das nicht mit der config.php machen, da das eine veränderliche Datei ist. Nicht jeder hat auf dem PC gleich ein aktuelles Backup der config.php zur Hand. Diese Funktion soll ja bei mir auch später noch nutzbar sein, als "Passwort vergessen" Funktion.
Wie wäre es mit der index.php?
Oder aber eine leere Dummy Datei, so wie jetzt. Ist die nicht vorhanden, oder älter als 5 min, und Passwort ist test, dann kein Login möglich.
Das könnte man alles in der login.php regeln, mit ein paar Zeilen Code. Wäre dann auch Sicherheitsstufe "Kompromiss" (mit Zeitlücke).
Re: [VOTING] XH 1.6.10
Hallo,
habe jetzt mal Holgers Idee als Grundlage genommen, Änderungen nur in der login.php:
Die Experten solten den Code lesen können, für alle anderen:
- ./setupControl.php NICHT vorhanden und Passwort "test": kein Login möglich
- ./setupControl.php älter als 5 min und Passwort "test": kein Login möglich
./setupControl.php wird gelöscht:
- bei erfolgreichem Login
- wenn älter als 5 min bei jedem Aufruf von CMSimple oder einer neuen Seite
Basis ist CMSimple 5.0
habe jetzt mal Holgers Idee als Grundlage genommen, Änderungen nur in der login.php:
Code: Select all
// timeout in seconds
$setup_timeOut = 300;
$cmsimpleLogin = '';
if(file_exists('./setupControl.php') && (time() - filectime('./setupControl.php') > $setup_timeOut) && $xh_hasher->CheckPassword('test', $cf['security']['password'])) $cmsimpleLogin = 'closed';
if(!file_exists('./setupControl.php') && $xh_hasher->CheckPassword('test', $cf['security']['password'])) $cmsimpleLogin = 'closed';
if(file_exists('./setupControl.php') && (time() - filectime('./setupControl.php') > $setup_timeOut)) unlink('./setupControl.php');
if ($login && !$adm)
{
if ($xh_hasher->CheckPassword($passwd, $cf['security']['password']) && $cmsimpleLogin !== 'closed')
{
setcookie('status' . str_replace('.','xc6oMd3Rs689',str_replace('index.php','',$sn)), 'adm', 0, CMSIMPLE_ROOT);
setcookie('status', 'adm', 0, CMSIMPLE_ROOT);
setcookie('passwd', $cf['security']['password'], 0);
$adm = true;
$edit = true;
if(!isset($_SESSION) && isset($_POST['passwd']) && $adm == true){session_start();}
$_SESSION[$csrfSession] = uniqid('', true);
writelog(date("Y-m-d H:i:s") . " from " . sv('REMOTE_ADDR') . " logged_in: $sn" . ' - "' . strip_tags($_POST['user']) ."\"\n");
unlink('./setupControl.php');
}
else
...
- ./setupControl.php NICHT vorhanden und Passwort "test": kein Login möglich
- ./setupControl.php älter als 5 min und Passwort "test": kein Login möglich
./setupControl.php wird gelöscht:
- bei erfolgreichem Login
- wenn älter als 5 min bei jedem Aufruf von CMSimple oder einer neuen Seite
Basis ist CMSimple 5.0
Re: [VOTING] XH 1.6.10
Vorausgesetzt, dass FTP okay ist, besteht der Unterschied in dem 5-Minuten-Slot. Den gibt es bei meinem Vorschlag definitiv nicht. Du kannst das System jahrelang ohne geändertes Passwort im Netz stehen lassen. Wenn dann, z.B. per Session-Variable, festgelegt wird, dass je Sitzung nur ein- oder zwei Mal ein Passwort generiert wird, wäre das sogar noch ein Schmankerl für die Ressourcenschonung bei Überfällen von irgendwelchen Bots.
Ja. Die Eignung der config.php hatte ich ja bereits selbst bezweifelt. Ein Dummy macht bei meinem Vorschlag jedoch keinen richtigen Sinn. Es würde aber nichts dagegen sprechen, wenn der Passworthash wirklich in einer eigenen Datei an prominenter Stelle gespeichert werden würde. Wäre halt ein include() per Request mehr und der Inhalt wäre ja lediglich die bekannte Definition der Variable.Gert wrote: ↑Thu May 28, 2020 1:43 pmNach einigem Nachdenken: Keine schlechte Idee, nur würde ich das nicht mit der config.php machen, da das eine veränderliche Datei ist. Nicht jeder hat auf dem PC gleich ein aktuelles Backup der config.php zur Hand. Diese Funktion soll ja bei mir auch später noch nutzbar sein, als "Passwort vergessen" Funktion.
Wie wäre es mit der index.php?
Oder aber eine leere Dummy Datei, so wie jetzt. Ist die nicht vorhanden, oder älter als 5 min, und Passwort ist test, dann kein Login möglich.
Ein Upload dieser Datei sollte jedem gelingen. Schließlich muss das CMS ja auch irgendwie auf den Server. Und Sie wäre, in Deinem Fall, auch der Zugang für einen Passwort-Reset.
Es bietet sich an, die Sache nicht in einem externen Skript zu erledigen. Direkt im Core hast Du alles an Klassen / Variablen etc. direkt zur Verfügung. Das einzige Argument wäre, dass ein paar Zeilen Code zu viel mitgeschleppt werden wenn das "Setup" einmal abgeschlossen ist. Ich denke aber, dass dies im konkreten Fall nicht wirklich viel ausmacht.
Mir fällt jetzt echt kein Grund ein, weshalb man die Sache mit dem 5 Minuten machen müsste, wenn eh FTP akzeptiert wird.
Re: [VOTING] XH 1.6.10
Ahh okay, ich verstehe. Nach dem Upload brauchst Du kein FTP mehr. Musst nur schnell genug sein und das Passwort ändern. Nur wenn die Zeit abgelaufen ist, muss per FTP nachgeholfen werden.
Jetzt habe ich das auch verstanden .
Tja. was ist nun besser? Geschmackssache würde ich sagen. Deine Lösung hat auf den ersten Blick mehr Komfort. Meine hat die 5-Minuten - "Unsicherheit" nicht.
Aber eigentlich bin ich ja gegen die zusätzlichen FTP-Aktionen .
Aber gut, dass wir mal drüber gesprochen haben!
Re: [VOTING] XH 1.6.10
Da gibt es noch etwas:Holger wrote: ↑Thu May 28, 2020 4:37 pmVorausgesetzt, dass FTP okay ist, besteht der Unterschied in dem 5-Minuten-Slot. Den gibt es bei meinem Vorschlag definitiv nicht. Du kannst das System jahrelang ohne geändertes Passwort im Netz stehen lassen. Wenn dann, z.B. per Session-Variable, festgelegt wird, dass je Sitzung nur ein- oder zwei Mal ein Passwort generiert wird, wäre das sogar noch ein Schmankerl für die Ressourcenschonung bei Überfällen von irgendwelchen Bots.
Man kann den gesamten Dialog mit dem User (was ist jetzt zu tun ... usw.) über den Bildschirm abhandeln. Eine Extra-Readme wäre gar nicht nötig.
Irgendwie fühlt sich das für mich "benutzerfreundlicher" an (zumindest momentan).
Re: [VOTING] XH 1.6.10
Ja. Die Readme - Dateien könnte man schön ausgiebig schreiben, stylen und includen.
Und die Sache wäre von Haus aus (narren) sicher. Aber es muss halt immer ein zweites Mal per FTP Hand angelegt werden. Für mich wäre das kein echtes "Problem". Aber es "gefällt" mir halt nicht sonderlich.