Security
Oct 15, 2026
Passwords
- Minimum User Password Strength (General Settings > Security) is enforced wherever a password is set: registration, account changes, resets and staff accounts.
- Passwords are stored hashed. Gateway keys, SMTP passwords and similar secrets are stored encrypted with the
APP_KEYfrom.env. Back up.env. Without the sameAPP_KEY, encrypted values cannot be read after a restore.
Forgot password
Clients and staff can reset their password by email. Links last 2 hours and work once.
Failed-login protection
After repeated failed sign-ins the IP is banned for Failed Login Ban Time (minutes). Add trusted addresses to Whitelisted IPs so you never lock yourself out. The sign-in forms are also rate limited.
Two-factor authentication
Install the Google Authenticator 2FA plugin. Clients and staff can then protect their account with a code from Google Authenticator, Authy or any TOTP app. You can require it for clients.
Email code sign-in
Switch on Email OTP Login in General Settings > Security. Each person then enables it for themselves. The code has 6 digits, lasts 10 minutes and locks after 5 wrong tries.
Client signup
Switch on Client Signup in General Settings > Security > Login to let visitors open an account at /client/register without placing an order. It uses the same fields as checkout, starts on the visitor's own country and adds a Sign up link to the client sign-in page and the storefront header. It is off by default, and checkout creates accounts either way.
CAPTCHA
Install reCAPTCHA, hCaptcha or Cloudflare Turnstile, add the keys under Settings > General Settings > Security, and it protects checkout, ticket forms and the client sign-in and reset pages. It is never applied to the admin sign-in. See Cloudflare Turnstile.
Fraud screening
Install IPQualityScore or MaxMind minFraud and enable it under Settings > Fraud Protection to score orders. See Security tools.
Session protection
By default a session ends when its IP address changes. You can switch this off in the Security tab if your clients use mobile networks that change address often.
Change the admin path
Move the admin sign-in away from /admin. See Changing the admin path.
Server hardening checklist
- Serve the site over HTTPS only.
- Keep the document root on the
publicfolder. - Keep
APP_DEBUG=falseandAPP_ENV=productionin.env. - Keep PHP updated and use PHP 8.3 or newer.
- Make
.envreadable only by the site user. - Back up the database and
.envregularly (see Backups). - Remove unused staff accounts and unused plugins.