Grav's flat-file content model still needs a protected administration plane

Grav stores site content in files and can run without a traditional database. That architecture reduces some kinds of database exposure. It does not remove the need to protect the administration panel, the API, or the ability to write content files.

The official downloads page separates Grav Core from the optional Administration Panel package. The documentation describes the Admin plugin as a management interface and the newer API as a separate headless surface. A public Grav site may expose neither, one, or both.

The selected count-only observation was title="Grav" with sub_type=all, page 1, pagesize 1, at 2026-11-03T02:46:20.314442+08:00. It returned 3308 matches.

A broad keyword needs attribution

The selected query was title="Grav", with sub_type=all, page 1, pagesize 1. It returned 3308. The word can appear in unrelated page titles, so the observation is a candidate set rather than a product-confirmed inventory.

For each owned match, confirm whether the site uses Grav and whether the Admin panel or API plugin is installed. Review the admin route, the API route, the public content directory, and the reverse proxy. A flat-file site can still expose a privileged write path through a management plugin or a misconfigured web server.

The admin documentation describes permissions such as admin.login, admin.super, admin.pages, and admin.configuration. The API documentation says API keys, JWT, and session authentication are tried in order and that the API uses its own permission namespace. A separate namespace is valuable only if the deployment does not grant broad API access to every admin user.

Keep the management surface separate

Restrict the Admin and API endpoints to the intended management network or an identity-aware proxy. Do not rely on a changed admin path as the only control. Remove the Administration Panel package when the site does not need it, or disable the plugin and verify that the route no longer responds.

Review user files and the account permissions that can write them. Enable two-factor authentication where supported and set rate limiting for failed login and password-reset attempts. Treat API keys as long-lived credentials with a named owner and a rotation date.

Test an anonymous request to the public site, the Admin route, and the API route. Then repeat through each proxy and alternate hostname. Verify that a content editor can change pages but cannot access configuration, plugins, themes, or user administration outside the assigned permission.

Monitor content and identity changes

Record changes to user accounts, permission maps, API keys, plugins, and the administration route. A file-backed site can be changed through a deployment pipeline as well as the Admin UI. Monitor both paths and keep a versioned baseline of the public content directory and security configuration.

The title count helps identify public candidates when the product token is visible. It cannot prove that Grav is installed or that an admin surface exists. The security finding comes from the attributed route, authentication policy, API permissions, and file-write authority.

Grav's flat-file design is simple to deploy. The management plane still needs the same care as a database-backed CMS: narrow roles, protected routes, short-lived credentials, and evidence that the public content path cannot write the site.

References