Legal
Security
Last updated September 2, 2026
This page summarizes how ALPR protects accounts and tournament data. It is a description of our practices, not a guarantee that the service cannot be abused.
Transport
playalpr.com is served over HTTPS.
Authentication
Players sign in with Discord OAuth. Discord sign-in never grants administrator access unless that Discord user is already linked as an administrator.
Administrator passwords are stored with Argon2id. Session tokens are hashed (SHA-256) before storage. Administrator login attempts are rate limited. Administrator actions are authorized on the server, not only by hiding UI.
Sessions and cookies
Player and admin sessions use separate HTTP-only cookies (alpr_player and alpr_admin), SameSite=Lax, and Secure in production. Administrator mutating forms require a CSRF token. Public redirects (OAuth and logout) use the configured public site URL, not the internal listen address.
Discord bot
Incoming Discord interactions are verified with Discord's Ed25519 signature. Invalid signatures are rejected. The bot identifies users by Discord user ID.
Uploads and secrets
Team and event images are stored on the server under controlled upload paths. We do not log or display password hashes, session tokens, CSRF secrets, or Discord bot tokens.
Backups
The production database is backed up daily. Backups are used for recovery, not as a public archive.
Reporting a vulnerability
If you believe you found a security issue, email [email protected] with enough detail for us to reproduce it. Please do not publicly disclose the issue until we have had a reasonable chance to fix it.
We do not currently offer a paid bug bounty unless we publish one. Do not attempt to access other people's accounts, data, or events as a test.

