Security
How Ruzivo Educore protects school records. This describes the system as it is built and run today.
Isolation
- Every school, and every campus of a group, has its own database and its own database user with rights to that database only.
- Database passwords are generated per school and stored encrypted (XSalsa20-Poly1305).
- Each school's uploads live in its own folder and are served only from that school's address. Uploaded files can never run as code.
- The web servers cannot create or drop databases; only an internal worker can, and it is not reachable from the internet.
Accounts
- Passwords are hashed with Argon2id. Sign-in is rate-limited, and accounts lock for 15 minutes after five wrong passwords.
- Two-step sign-in (authenticator app) is available to every account and required for Ruzivo Educore staff.
- Opening a school from the platform uses a single-use ticket that expires after 60 seconds.
- Support staff can only open a school after recording a reason, and every visit is in the school's audit log.
Transport and browser
- HTTPS everywhere with HSTS. Session cookies are Secure, HttpOnly and SameSite.
- The platform site sends a strict Content Security Policy that allows no inline or third-party scripts.
- Every form is protected against cross-site request forgery, and every input is validated on the server.
Operations
- Each school's database is backed up on its own every night and kept for 14 days.
- Administrative actions are written to an audit log.
- Status checks run every minute; see System status.
Reporting a problem
If you find a security issue, email security@educore.co.zw with the details. Please do not access other schools' data or disrupt the service while testing. We reply within two working days.