Security Practices

A summary of the controls protecting student and staff data.

Access control

Every account is governed by role-based permissions across thirteen institutional roles. Authorisation is enforced at the database layer with row-level security, so a user can only read or change the rows their role permits — the interface is never the only guard.

Least privilege for sensitive operations

Privileged operations — portal activation, assessment start, paper retrieval and submission — run through server-verified functions that validate the caller's identity. They cannot be invoked directly by a signed-in browser session.

Encryption

All traffic is served over TLS. Data at rest is encrypted by the managed database platform, and service credentials are never exposed to browser code.

Audit logging

Privileged actions and access to identity fields are recorded in append-only audit logs with the actor, entity and timestamp. Logs cannot be edited or deleted from the application.

Assessment integrity

Invigilated assessments record integrity signals and produce a risk score reviewed by authorised staff. Recordings and evidence are stored in a private bucket reachable only through authorised access paths.

Secure development

Changes pass automated security checks in continuous integration that assert row-level security remains enabled and that anonymous access grants have not widened. Regressions block the change from being merged.

Reporting a vulnerability

Report suspected vulnerabilities to privacy@xullop.co.za with enough detail to reproduce the issue. Please do not access data belonging to other users while testing; we will acknowledge reports and keep you updated.