Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,090 of 9,090 pages
About the help in other languages
All help pages

Demomodus für Hoster

Wie ein Hoster eine öffentliche Exponential-Demo mit der Umgebungsvariablen EXP_DEMO_MODE=1 betreibt - sie für PHP-FPM, Apache, Exponential Velocity, Cron und Container setzen, das veröffentlichte Demo-Passwort…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/hosting/security/demo-mode-for-hosts.md

On this page

This page is a translation. Read the English original

Demomodus für Hoster

Diese Seite ist für die Systemadministratoren eines Hosters, der eine öffentliche Demonstrations-Website von Exponential betreibt, eine, deren Anmeldung als Administrator veröffentlicht ist. Der Demomodus wird durch die Umgebungsvariable EXP_DEMO_MODE=1 eingeschaltet. Solange er an ist, kann niemand das Passwort eines Administrators ändern oder zurücksetzen (damit der nächste Besucher sich weiterhin anmelden kann), die Installer akzeptieren das veröffentlichte Demo-Passwort, und die Administration zeigt ein Banner Demo-Modus.

Warnung: Der Demomodus sagt der Welt, dass das Administratorpasswort bekannt ist. Setzen Sie ihn nur für eine Website, deren Inhalte, Benutzer und Einstellungen alle wegwerfbar sind, mit eigenem Systembenutzer, eigenem Pool und eigener Datenbank, und nie für einen geteilten Pool, eine serverweite Umgebung oder eine Vorlage, aus der andere Websites gebaut werden.

Inhalt

  1. Die Regeln der Variablen
  2. Sie für jeden Server setzen
  3. Eine Demo installieren
  4. Sie prüfen
  5. Sie von der Produktion fernhalten
  6. Risiken, die Sie dem Eigentümer der Demo nennen
  7. Verwandte Seiten

Die Regeln der Variablen

  • Nur Umgebung. Keine INI-Einstellung, kein Anfrageparameter und keine Seite der Administration kann ihn einschalten, sodass eine Einstellungsdatei oder eine Datenbank, die von einer Demo kopiert wird, ihn nicht auf eine andere Website trägt.
  • Nur der genaue Wert 1. 0, true, yes, on und ein leerer Wert lassen ihn aus.
  • Pro Prozess. PHP liest ihn bei jedem Aufruf zuerst mit getenv(), dann aus $_SERVER. Jeder Prozess, der die Demo ausliefert oder pflegt, braucht ihn: das PHP des Webservers, Exponential Velocity, wenn er die Website ausliefert, Cronjobs und Konsolenbefehle. Ein Prozess ohne ihn läuft mit ausgeschaltetem Demomodus.

Sie für jeden Server setzen

Wo PHP läuftWie Sie sie setzen, nur für die Demo
PHP-FPMin der eigenen Pool-Datei der Demo: env[EXP_DEMO_MODE] = 1, dann den Master des Pools neu laden
Apache (mod_php oder PHP-FPM über mod_proxy_fcgi)im virtuellen Host der Demo: SetEnv EXP_DEMO_MODE 1
LiteSpeed / OpenLiteSpeed (lsphp)im virtuellen Host der Demo oder in der Umgebung der externen Anwendung: EXP_DEMO_MODE=1
Exponential Velocityexport EXP_DEMO_MODE=1 in den Site-envvars der Demo, /etc/vc/sites-available/<site>.envvars (<site> zeigt ./console exp:velocity layout), die exp:velocity start nur für den Server dieser Installation liest; oder die Umgebung des Prozesses, der den Server dieser Installation startet: Environment=EXP_DEMO_MODE=1 in seiner eigenen systemd-Unit oder einem Drop-in. Die Worker erben sie. Nie in der gemeinsamen /etc/vc/envvars
FrankenPHP oder ein anderer Anwendungsserverdie Umgebung des Serverprozesses
Croneine Zeile EXP_DEMO_MODE=1 oben in der Crontab des Benutzers der Demo
Konsoleexport EXP_DEMO_MODE=1 im Shell-Profil des Benutzers der Demo oder vor jedem Befehl
ContainerENV EXP_DEMO_MODE=1 im Image der Demo oder -e EXP_DEMO_MODE=1 / environment: nur für den Dienst der Demo

Neustarts von Velocity. exp:velocity restart und exp:velocity deploy lesen die Site-envvars der Demo bei jedem Start, gleich aus welcher Shell; die Variable dort überdauert also Neustarts. Ein Neustart mit dem eigenen qbixctl der Engine liest sie nicht: Der Demomodus ist dann bis zum nächsten exp:velocity restart aus. Die gemeinsame /etc/vc/envvars liest der Server jeder Installation auf dem Host, sodass der Demomodus dort auch Produktions-Websites erreichen würde: exp:velocity start übergibt EXP_DEMO_MODE von dort nie, und ein Worker lehnt einen solchen Wert ab und schreibt einmal pro Prozess eine Zeile demo/refused in var/log/security.log. Eine Demo, die die Zeile aus einem früheren Release noch in /etc/vc/envvars hat, läuft nach dem Neustart des Updates mit ausgeschaltetem Demomodus, bis die Zeile in die Site-envvars verschoben ist (Velocity: nur eine Installation).

Eine Demo installieren

Setzen Sie die Variable auch für die Installation. Die Installer (Setup-Assistent, Kickstarter, exp:install) akzeptieren dann das veröffentlichte Administratorpasswort, obwohl es ein bekanntes Wort und kürzer als MinPasswordLength ist, statt es durch ein zufälliges zu ersetzen:

EXP_DEMO_MODE=1 ./console exp:install --apply --db=sqlite --password='<the published demo password>' ...

Jedes nicht leere Passwort funktioniert, also sowohl publish (sieben Zeichen) als auch publishing; ein leeres wird weiterhin abgelehnt. Nur das Administratorpasswort der neuen Installation wird gelockert: Jedes andere Konto behält [UserSettings] MinPasswordLength (10 in der Auslieferung) und die Liste bekannter Passwörter. Setzen Sie das Passwort nach der Installation nicht mit exp:resetuserpassword zurück: Im Demomodus wird das verweigert, und es ist nicht mehr nötig.

Eine Demo, die nach Zeitplan neu aufgebaut wird (alle paar Stunden, aus dem aktuellen Code), tut das in ihrem Skript für den Aufbau: mit der Variablen installieren, die neue Website einsetzen, die Variable in der PHP-Umgebung und der Crontab der laufenden Website behalten. Das Skript darf die Variable nicht in config.php, settings/ oder irgendetwas schreiben, das auf andere Websites kopiert wird.

Sie prüfen

  • Die Administration zeigt auf jeder Seite das Banner Demo-Modus.
  • grep 'demo/mode' var/log/security.log listet jeden Prozess auf, der damit gestartet ist (eine Zeile pro Prozess, mit seiner PID und SAPI); Setup > Logdateien gruppiert sie als demo/mode.
  • Das Audit hat ein Ereignis system.demo.mode pro Prozess (immer festgehalten).
  • Ein Konsolenbefehl gibt Demo mode is on (EXP_DEMO_MODE=1) ... auf der Standardfehlerausgabe aus.

Sie von der Produktion fernhalten

  • Setzen Sie sie nie serverweit (/etc/environment, ein globales SetEnv, der Standard-Pool, ein Basis-Image) oder in einer Vorlage für die Bereitstellung.
  • Lösen Sie darauf einen Alarm aus: Eine Zeile demo/mode in security.log einer Produktions-Website oder ein Audit-Ereignis system.demo.mode bedeutet, dass die Variable einen Prozess erreicht hat, den sie nicht hätte erreichen dürfen.
  • Nehmen Sie sie in die Sicherheitsprüfung auf: grep -r EXP_DEMO_MODE über die PHP-FPM-Pools, die virtuellen Hosts, die Dienst-Units und die Crontabs von Produktionsmaschinen darf nichts finden.

Risiken, die Sie dem Eigentümer der Demo nennen

  • Der Demomodus schützt nur Administratorpasswörter. Ein als Administrator angemeldeter Besucher kann weiterhin Konten anlegen, Rollen und Einstellungen ändern, Pakete installieren und Dateien hochladen: Bauen Sie die Demo nach Zeitplan neu auf.
  • Halten Sie echte Daten, echte Mailadressen und Geheimnisse aus der Demo heraus, und schicken Sie ihre Mail in eine Datei oder eine Senke.
  • Andere veröffentlichte Anmeldungen (ein Redakteur, ein Mitglied) sind nicht geschützt.
  • Wenn die Variable verloren geht (ein Neustart aus einer Shell ohne sie), ist der Demomodus aus, ohne ein anderes Zeichen als das fehlende Banner.

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x