Repository navigation
Release v1.18.1
Release v1.18.1: security - setup API closed after completion, hardened setup inputs.
Changelog
Security
POST /_setup/api/advanceclosed after setup: it answers 404 once setup is completed (same gate as the wizard page), so{"profile":"minimal"}can no longer create an extra admin and{"profile":"full_database"}can no longer re-importlast-restore-dump.sql. The payloadprofileis only honoured before a run started; afterwards the stored profile is pinned. Responses no longer includeanswers.GET /_setup/api/progressrequires the setup token (when configured) and no longer returnsanswers(admin email, DATABASE_URL, SQL path).- DATABASE_URL step: the value is always written single-quoted to
.env.local(Symfony Dotenv no longer expands$VAR/$(cmd)or mangles passwords containing$/\), the existing line is replaced literally (no regex backreferences), and URLs containing', line breaks or control characters are rejected (percent-encode them). sql_import_path(bootstrap mode /sql_filestep) is confined to existing.sqlfiles undervar/site-backup/(real path; absolute paths elsewhere,../and symlink escapes are rejected). SQL import errors report the file name and SQLSTATE only, never the dump contents.- Restore
progress.json: callers that are not authorised for the panel getactive/phase/percent/messageonly (no log, error or backup id). - Backup archives are
chmod 0600;var/site-backup/last-restore-dump.sqlis0600and deleted after the setupsql_filestep imports it. - Docs:
setup.setup_tokenis mandatory on internet-facing hosts (SECURITY.md, CONFIGURATION.md).
Full Changelog: v1.18.0...v1.18.1