Z2C Page Protect
Serverseitiger PHP-Schutz für ausgewählte Mobirise-Seiten — mit Benutzern, Gruppen, eigenständigem Login und wählbarer Mensch-Prüfung, ohne MySQL, MariaDB oder SQLite.
Was Z2C Page Protect kann
Automatische Seitenerkennung
Liest die Seiten direkt aus dem Mobirise-Projekt. Neue, gelöschte und umbenannte Seiten werden beim Öffnen bzw. Aktualisieren abgeglichen.
Public · Login · Groups
Jede Seite kann öffentlich bleiben, eine Anmeldung verlangen oder nur für ausgewählte Gruppen freigegeben werden.
Benutzer & Gruppen
Benutzer anlegen, bearbeiten, deaktivieren, Passwörter ändern und mehreren Gruppen zuordnen. Gruppen können angelegt, umbenannt und kontrolliert gelöscht werden.
Keine SQL-Datenbank
Die veröffentlichte Authentifizierung arbeitet ausschließlich mit PHP-Dateien und geschützten Datendateien.
Login Designer
Logo, optionaler Ziel-Link beim Klick auf das Logo, Hintergrund, Karte, Transparenz, Text, Button, Hover, Breite, Radius, Schatten, Hintergrundbild sowie Titel und Untertitel in DE/EN/FR.
Mensch-Prüfung nach Wahl
Wahlweise keine Zusatzprüfung, Google reCAPTCHA v2, eine zufällige Addition oder ein serverseitig erzeugter Bildcode. Rechnen und Bildcode benötigen keinen externen Dienst.
Sichere Sessions
Native PHP-Sessions, Session-ID-Regeneration nach Login, HttpOnly, SameSite, Secure unter HTTPS und konfigurierbares Timeout.
Remember me
Optional. Zufällige Selector/Validator-Tokens, gehashter Validator im geschützten Datenordner und sichere Cookies. Kein Passwort im Cookie.
Anti Brute Force
Temporäre Sperre nach wiederholten Fehlversuchen. Speicherung ohne SQL unter /z2c-protect/data/.
403 / Logout
Eigene Forbidden-Seite für angemeldete Benutzer ohne passende Gruppe sowie ein einfacher Logout-Endpunkt.
Publish Guard
Überwacht Mobirise-Dateischreibvorgänge via writeFileSync, writeFile, fs.promises.writeFile sowie rename/copy und arbeitet unabhängig vom gewählten Publish-Ordner.
HTML → PHP
Nur geschützte Seiten werden beim Publish von .html nach .php umgeleitet und mit einem PHP-Guard versehen. Öffentliche Seiten bleiben HTML.
Interne Links
Exakte interne Links zu geschützten Seiten werden automatisch von .html auf .php angepasst — inklusive Query-Strings und Anchors.
Strikte Projekt-Persistenz
Konfiguration in project.mobirise und projektgebundener lokaler Cache. Benutzer, Gruppen, Regeln und Undo eines Projekts werden nicht mehr in ein anderes Mobirise-Projekt übernommen.
Backup / Undo
Lokale Backups vor wichtigen Konfigurationsänderungen, begrenzte Historie und Undo der letzten Konfiguration.
Autonome Z2C UI
Dunkles, verschiebbares und skalierbares Fenster. Felder, Checkboxen und Buttons sind gegen das CSS des Mobirise-Themes abgeschirmt.
Publish-Struktur
Beim Publish einer geschützten Site wird automatisch erzeugt:
/z2c-protect/ auth.php config.php users.php groups.php login.php captcha.php logout.php forbidden.php assets/ data/ .htaccess
Der Schutz selbst kommt aus PHP. .htaccess dient unter Apache zusätzlich zum Schutz sensibler Dateien; Nginx-Hinweise stehen in der Hilfe.
Sicherheitsprinzip
Passwörter
Nie im Klartext. Mobirise speichert einen starken PBKDF2-SHA256-Hash. Nach dem ersten erfolgreichen Login migriert der Server diesen automatisch zu password_hash(PASSWORD_DEFAULT); danach wird password_verify() verwendet.
Mensch-Prüfung
Bei reCAPTCHA bleibt der Secret key serverseitig. Die lokale Rechenaufgabe und der Bildcode werden in der PHP-Session erzeugt und geprüft; der Bildcode wird als Grafik ohne Klartext-Code im HTML ausgegeben.
Formulare & Redirects
CSRF-Token im Login, validierte lokale Return-URLs, keine offenen Redirects und HTML-Escaping für Ausgaben.
Dateien
Keine Passwörter oder reCAPTCHA-Secret-Keys im veröffentlichten HTML. Runtime-Daten liegen in PHP-Dateien unter dem geschützten Datenordner.
Workflow
Server-Anforderungen
- PHP 7.4+ — erforderlich
- PHP Sessions — erforderlich
- Apache / Nginx — unterstützt, Hinweise beachten
- .htaccess — nur Apache, für den Kernschutz optional
- Datenbank — NICHT ERFORDERLICH
- reCAPTCHA — bei Aktivierung muss der Server ausgehend per HTTPS
www.google.comerreichen können
Neu in 1.0.7
Z2C Page Protect
Server-side PHP protection for selected Mobirise pages — with users, groups, a standalone login and selectable human verification, without MySQL, MariaDB or SQLite.
What Z2C Page Protect does
Automatic page detection
Reads pages directly from the Mobirise project. New, deleted and renamed pages are reconciled when the plugin is opened or refreshed.
Public · Login · Groups
Each page can remain public, require a login, or be restricted to selected groups.
Users & groups
Create, edit and disable users, change passwords and assign several groups. Groups can be added, renamed and deleted with usage checks.
No SQL database
The published authentication system works only with PHP files and protected runtime data files.
Login Designer
Logo, optional destination link when the logo is clicked, background, card, opacity, text, button, hover, width, radius, shadow, background image, title and subtitle in DE/EN/FR.
Selectable human verification
Choose no extra check, Google reCAPTCHA v2, a random math question or a server-generated image code. Math and image modes need no external service.
Secure sessions
Native PHP sessions, session ID regeneration after login, HttpOnly, SameSite, automatic Secure under HTTPS and configurable timeout.
Remember me
Optional. Random selector/validator tokens, hashed validator in the protected data directory and secure cookies. No password is stored in the cookie.
Anti brute force
Temporary lock after repeated failed logins. Data is stored without SQL under /z2c-protect/data/.
403 / Logout
Dedicated Forbidden page for authenticated users without the required group plus a simple logout endpoint.
Publish Guard
Intercepts Mobirise file operations through writeFileSync, writeFile, fs.promises.writeFile and rename/copy, independently of the selected publish folder.
HTML → PHP
Only protected pages are redirected from .html to .php during publishing and receive a server-side PHP guard. Public pages stay HTML.
Internal links
Exact internal links to protected pages are automatically rewritten from .html to .php, including query strings and anchors.
Strict per-project persistence
Configuration stays in project.mobirise with a project-scoped local cache. Users, groups, page rules and Undo from one project cannot leak into another Mobirise project.
Backup / Undo
Local backups before important configuration changes, limited history and undo of the latest configuration.
Standalone Z2C UI
Dark draggable and resizable window. Fields, checkboxes and buttons are isolated from the Mobirise theme CSS.
Published structure
Publishing a protected site automatically generates:
/z2c-protect/ auth.php config.php users.php groups.php login.php captcha.php logout.php forbidden.php assets/ data/ .htaccess
The real protection comes from PHP. Under Apache, .htaccess adds protection for sensitive files; Nginx notes are available in Help.
Security model
Passwords
Never stored in clear text. Mobirise stores a strong PBKDF2-SHA256 hash. After the first successful login, the server migrates it to password_hash(PASSWORD_DEFAULT); later logins use password_verify().
reCAPTCHA
The site key is sent to the Google widget. The secret key remains in server-side config.php. Login is accepted only after successful server verification.
Forms & redirects
CSRF token on login, validated local return URLs, no open redirects and HTML escaping for output.
Files
No passwords or reCAPTCHA secret keys in published HTML. Runtime data stays in PHP files under the protected data directory.
Workflow
Server requirements
- PHP 7.4+ — required
- PHP sessions — required
- Apache / Nginx — supported with notes
- .htaccess — Apache only, optional for core protection
- Database — NOT REQUIRED
- reCAPTCHA — when enabled, the server needs outbound HTTPS access to
www.google.com
What’s new in 1.0.7
Z2C Page Protect
Protection PHP côté serveur des pages Mobirise sélectionnées — avec utilisateurs, groupes, page de connexion autonome et vérification humaine au choix, sans MySQL, MariaDB ni SQLite.
Fonctions de Z2C Page Protect
Détection automatique des pages
Lit directement les pages du projet Mobirise. Les nouvelles pages, suppressions et renommages sont réconciliés à l’ouverture ou lors d’une actualisation.
Public · Login · Groupes
Chaque page peut rester publique, nécessiter une connexion ou être réservée à certains groupes.
Utilisateurs & groupes
Créer, modifier et désactiver des utilisateurs, changer leur mot de passe et attribuer plusieurs groupes. Les groupes peuvent être ajoutés, renommés et supprimés avec contrôle des associations.
Aucune base SQL
L’authentification publiée fonctionne uniquement avec PHP et des fichiers de données protégés.
Login Designer
Logo, lien de destination facultatif lors du clic sur le logo, fond, carte, transparence, texte, bouton, hover, largeur, radius, ombre, image de fond, titre et sous-titre en DE/EN/FR.
Vérification humaine au choix
Choix entre aucune vérification supplémentaire, Google reCAPTCHA v2, une addition aléatoire ou un code à recopier généré en image. L’addition et l’image ne nécessitent aucun service externe.
Sessions sécurisées
Sessions PHP natives, régénération de l’ID après connexion, HttpOnly, SameSite, Secure automatique sous HTTPS et délai d’expiration configurable.
Remember me
Facultatif. Tokens selector/validator aléatoires, validator hashé dans le dossier de données protégé et cookies sécurisés. Aucun mot de passe dans le cookie.
Anti brute force
Temporisation après plusieurs échecs de connexion. Les données sont conservées sans SQL sous /z2c-protect/data/.
403 / Logout
Page Forbidden dédiée pour un utilisateur connecté sans le bon groupe et point de sortie simple pour la déconnexion.
Publish Guard
Intercepte les écritures Mobirise via writeFileSync, writeFile, fs.promises.writeFile ainsi que rename/copy, indépendamment du dossier choisi pour la publication.
HTML → PHP
Seules les pages protégées passent de .html à .php pendant la publication et reçoivent le garde PHP côté serveur. Les pages publiques restent en HTML.
Liens internes
Les liens internes exacts vers les pages protégées sont automatiquement corrigés de .html vers .php, y compris avec paramètres et ancres.
Persistance strictement par projet
Configuration dans project.mobirise avec cache local lié au projet. Utilisateurs, groupes, règles de pages et Undo d’un site ne peuvent plus réapparaître dans un autre projet Mobirise.
Backup / Undo
Backups locaux avant les changements importants, historique limité et restauration de la dernière configuration.
Interface Z2C autonome
Fenêtre sombre, déplaçable et redimensionnable. Champs, cases à cocher et boutons sont isolés du CSS du thème Mobirise.
Structure publiée
Lors de la publication d’un site protégé, le plugin génère automatiquement :
/z2c-protect/ auth.php config.php users.php groups.php login.php captcha.php logout.php forbidden.php assets/ data/ .htaccess
La vraie protection vient de PHP. Sous Apache, .htaccess ajoute une protection des fichiers sensibles ; les indications pour Nginx se trouvent dans l’aide.
Principe de sécurité
Mots de passe
Jamais en clair. Mobirise conserve un hash PBKDF2-SHA256 robuste. Après le premier login réussi, le serveur le migre automatiquement vers password_hash(PASSWORD_DEFAULT) ; les connexions suivantes utilisent password_verify().
Vérification humaine
Avec reCAPTCHA, la Secret key reste côté serveur. L’addition et le code image sont générés et vérifiés dans la session PHP ; le code image est rendu graphiquement sans code en clair dans le HTML.
Formulaires & redirections
Token CSRF sur le login, URL de retour locale validée, pas d’open redirect et échappement HTML des sorties.
Fichiers
Aucun mot de passe ni Secret key reCAPTCHA dans le HTML publié. Les données runtime restent dans des fichiers PHP sous le dossier de données protégé.
Workflow
Prérequis serveur
- PHP 7.4+ — requis
- Sessions PHP — requises
- Apache / Nginx — supportés avec quelques notes
- .htaccess — Apache uniquement, facultatif pour le cœur de la protection
- Base de données — AUCUNE
- reCAPTCHA — lorsqu’il est activé, le serveur doit pouvoir joindre
www.google.comen HTTPS sortant