Security
The following is how LE59 products are engineered for security. We continuously follow dependency and configuration security, but we do not promise absolute security.
Transport and Network Boundary
- All products enforce HTTPS, with TLS terminated centrally by nginx.
- Backend containers bind only to 127.0.0.1 and expose no public ports.
Rate Limiting and Availability
- Creation, query and other APIs are rate-limited per IP; when Redis is down, creation-type operations fail closed — refused rather than degraded.
Credentials and Sensitive Data
- Admin tokens are stored as SHA-256 hashes, never in plaintext.
- Luck draw seeds must be encrypted at rest in production; the service refuses to start when this is not configured.
- Link access events store only salted SHA-256 hashes (IP and User-Agent), never plaintext; raw events are purged in batches after aggregation per the retention period.
Database and Permissions
- Luck and Link use versioned migrations with schema checks (schema_migrations); runtime accounts never run DDL.
- Least-privilege principle: API runtime accounts hold only the permissions they need.
Privacy by Default
- No cross-product shared identifiers (cookies or device fingerprinting).
- Stats respect Do Not Track; each visit uses only an in-memory random id.
Our Honest Boundary
We keep updating dependencies, hardening configuration and fixing known issues, but no system can guarantee absolute security. If you find a security issue, please report it via the Contact Us page and mark the subject with "security".