Inhalt:
\backend\login\index.php
\backend\login\ajax_check_ssl.php
\templates\freshcat\js\login.js
Erwünschte Funktionsweise:
Wird die Login-Seite über HTTP aufgerufen, prüft das login.js, ob SSL verfügbar ist. Hierzu wird per AJAX ein (neues) Script aufgerufen, was auf der Serverseite prüft, ob SSL vorhanden ist. Meldet dieses Script nun "true" zurück, wird die Login-Seite per HTTPS neu geladen. Auf diese Weise ist der Login geschützt.
Einschränkungen:
* Der Check erfolgt über $_SERVER, was potentiell gehackt werden kann. Ich habe aber bisher nichts gefunden, was nicht nur besser ist, sondern auch zuverlässig funktioniert.
* Es kann sein, daß der Webserver zwar SSL (=HTTPS) kann, dort dann aber nicht für PHP konfiguriert ist. (War bei mir der Fall.) Dann bekommt man den Quellcode des Scripts statt der Anmeldeseite. :?
* Da das komplette Backend nach dem Login bei HTTPS bleibt, kann es zu Seiteneffekten kommen. Ich habe noch nicht alles durchtesten können. Es kann auch sein, daß es sich durch irgendwelche Links wieder auf HTTP umstellt, wobei das nicht ganz so dramatisch ist, weil dann das Kennwort nicht wieder übertragen wird.
WICHTIG:
Der Patch erfordert auch eine Änderung in der config.php.
wird zudefine('CAT_URL', 'http://myserver/inst');
(Also das 'http:' entfernen.)define('CAT_URL', '//myserver/inst');
Ich lasse das mal eine Weile bei mir so laufen, keine Ahnung, wohin das führt. Für den Fall "Server kann SSL, dann aber kein PHP" müßte es noch eine Ausweichmöglichkeit geben, aber für den Patch ist das erst mal zweitrangig.
Achso, bitte auch auf Servern testen, die KEIN SSL können.
Dank im Voraus.