Trust

Security and data protection

Educoda handles sensitive personal data for thousands of students across England. Security is built into every layer, from how passwords are stored to how student documents are accessed, from audit logs to encrypted connections.

TLS 1.2 and 1.3 everywhere AES-256 encryption at rest Multi-factor authentication Role-based access controls ICO registered ZB949031

Security controls in place today

Every control listed here is implemented and active in the production system.

Encryption in transit

All connections are encrypted using TLS 1.2 or TLS 1.3. Weak protocols and ciphers are explicitly disabled. HTTP traffic is redirected to HTTPS automatically, and HSTS headers prevent downgrade attacks.

Encryption at rest

The database is stored on LUKS2-encrypted volumes using AES-256. Uploaded documents are stored in Cloudflare R2, which encrypts every file with AES-256. Database backups are encrypted with AES-256 before they are written.

Encrypted backups in two locations

A full backup every week, a differential backup every night, and continuous archiving of every change, so the database can be restored to any point in time. Backups are held in two separate places, a dedicated backup server in Germany and Cloudflare R2 in the EU, and are kept for up to 13 weeks.

Private database network

The database server accepts connections only from our own application servers, over a private network. A cloud firewall blocks all inbound internet traffic to it.

Argon2 password hashing

Passwords are hashed using Argon2, the winner of the Password Hashing Competition and the recommended algorithm for password storage. Plain-text passwords are never stored or logged.

Multi-factor authentication

TOTP-based two-factor authentication is available for all users and can be made mandatory for staff roles. All superuser and admin accounts are required by policy to have MFA enabled. Recovery codes are provided at enrolment.

Role-based access controls

A granular, three-tier RBAC system controls every action in the platform. Permissions can be granted or explicitly denied per-user. Roles can be time-limited, and a full audit trail records every change to who has what access.

School data isolation

Each school operates in a fully isolated tenant. Staff can only access data belonging to their own institution. This is enforced at the middleware layer on every request, not just in application logic. Cross-school access is impossible without superuser rights.

Private document storage

Sensitive student documents (identification, results) are stored in a private bucket with no public URL. Access is granted only via time-limited, cryptographically signed presigned URLs generated on demand. Documents cannot be guessed or enumerated.

Audit logging

Login events, permission changes, GDPR erasure requests, and payment waivers are written to immutable audit logs. Administrators can review who took what action and when across all security-sensitive operations.

CSRF protection and bot prevention

All state-changing requests require a CSRF token. Signup forms include Cloudflare Turnstile challenge and honeypot fields to prevent automated bot registrations. CSRF tokens are transmitted only over HTTPS-secured cookies.

PCI-compliant payment processing

Payments are processed by Stripe. No card numbers, CVV codes, or payment credentials ever touch our servers. Stripe webhook events are verified using cryptographic signatures before processing. We store only payment status and Stripe-issued references.

Hosted and delivered securely

The platform runs on infrastructure designed for reliability, resilience, and security.

Segregated object storage

Student files and platform assets are stored in separate public and private buckets. Private files require a valid time-limited signed URL to access. No direct public access is possible.

UK-hosted transactional email

Transactional emails are sent through Amazon Web Services in its London region, so email traffic stays in the UK.

In-memory session and cache layer

Sessions and cache are backed by a password-authenticated in-memory store. Sessions expire after 60 minutes of inactivity and are invalidated on password change.

Hardened reverse proxy with TLS termination

All traffic passes through a reverse proxy configured with TLS 1.2/1.3, strong cipher suites, HSTS, and security headers before reaching the application layer. IP-based direct access is blocked.

Real-time error monitoring

Application errors are captured in real time to enable rapid diagnosis and remediation. Personal data is not transmitted to monitoring infrastructure.

Secrets management

All credentials, including database passwords, API keys and payment keys, are stored as environment variables and never hardcoded in source code or version control.

Mandatory email verification

All accounts must verify their email address before accessing the platform. Unverified accounts cannot log in or submit data.

Session management

Sessions expire after 60 minutes of inactivity. Password changes immediately invalidate all active sessions. Secure, HttpOnly cookies prevent client-side access.

Resilient background processing

Background tasks run with strict time and resource limits to prevent runaway processes or resource exhaustion. Workers are automatically recycled to prevent memory leaks.

How we develop and maintain security

Security is a practice, not a feature. This is how we work.

Locked dependency management

All software dependencies are pinned in a lock file and installed from a frozen, verified state on every deployment. This prevents unintended updates and supply-chain substitution. Dependencies are reviewed before updates are applied.

Automated testing and CI

All code changes pass through an automated test suite backed by a full database before deployment. Payment processing, permission logic, and authentication flows are covered by tests. No untested code reaches production.

Static analysis on every commit

Automated static analysis and type-checking tools run on every commit before code is reviewed. These tools catch common security anti-patterns, including injection vectors and unsafe input handling, before code reaches the codebase.

Principle of least privilege

Access rights are granted at the minimum level required. Staff receive only the permissions their role requires. Permissions can expire automatically. Every grant and revocation is written to an immutable audit log with the actor, timestamp, and reason.

Injection prevention

All database queries use parameterised queries by default, making SQL injection structurally impossible in standard usage. Output is escaped by the template layer, protecting against cross-site scripting. Neither raw queries nor unescaped output are used.

Incident monitoring and alerting

Application errors are captured in real time. Critical errors trigger immediate alerts to the engineering team. Error rates are monitored continuously to detect unusual activity or degraded behaviour.

Compliance and standards alignment

We are transparent about what we have implemented, what we are working towards, and what we have not yet achieved.

UK GDPR and DPA 2018 Active

Educoda Ltd is registered with the Information Commissioner's Office (ICO registration ZB949031). We have published a privacy policy, support data erasure requests, and maintain a GDPR erasure log.

  • ICO registration in place
  • Published privacy policy
  • Data encrypted in transit and at rest
  • GDPR erasure requests supported
  • Data (Use and Access) Act 2025 reflected in policy
  • Planned: self-service data export for students

School Admissions Code Active

Data minimisation is built into admissions. In Admissions Code mode, which is on by default for new schools (existing schools switch it on from their settings), school staff only see the information that bears on their published admission arrangements until the student submits their enrolment on results day. The school remains the admission authority and is responsible for its arrangements.

  • Demographics, SEN, FSM, medical, contacts, future plans, ID and references locked until enrolment
  • Referee grades never used in admissions decisions
  • Prohibited fields blocked from pot rules and results day gates
  • SEN and FSM withheld from DfE education records until enrolment

Read more about the Code and the 2026 determination.

OWASP Top 10 Aligned with

The application is designed following OWASP Top 10 principles. Key risks are addressed through framework-level protections and deliberate architectural choices.

  • A01 Broken Access Control: RBAC and tenant isolation
  • A02 Cryptographic Failures: Argon2, TLS 1.3, presigned URLs
  • A03 Injection: Django ORM (parameterised queries)
  • A05 Security Misconfiguration: security headers, HSTS
  • A07 Auth Failures: MFA, session expiry, email verification
  • A09 Security Logging: audit trail active across key operations

Cyber Essentials In progress

We are working towards NCSC Cyber Essentials certification. The five key controls are partially in place across our infrastructure.

  • Firewalls: cloud firewalls on every server, and the database reachable only over a private network
  • Secure configuration: no debug mode, locked-down defaults
  • User access control: RBAC, MFA, least privilege
  • Patch management: automatic security updates on every server; formal patching policy in progress
  • In progress: malware protection, formal policy in development

ISO 27001 Planned

We have not pursued ISO 27001 certification yet. Many of the technical controls required by the standard are already in place. Formal ISMS documentation, risk register, and third-party audit are on our roadmap.

  • Access control (A.9): RBAC, MFA, audit logs
  • Cryptography (A.10): Argon2, TLS, AES-256 at rest, signed URLs
  • Backup (A.12.3): encrypted backups in two locations, with point-in-time recovery
  • Incident management (A.16): Sentry monitoring
  • Planned: risk assessment documentation
  • In progress: vendor risk management

SOC 2 Not pursued

SOC 2 is a US-origin framework primarily relevant to American enterprise procurement. It is not currently on our roadmap. UK and EU customers are better served by our ICO registration and Cyber Essentials certification path.

  • We do not hold or claim SOC 2 certification.
  • Many underlying controls (availability, security) are implemented.
  • Contact us if your procurement process requires this assessment.
A note on claims: Every control listed on this page is implemented and active in production. Where we use the word aligned or planned, it means the control either follows the principles of a standard without formal certification, or is on our active roadmap. We do not claim certifications we do not hold.

Frequently asked questions

Answers describe how the system is built today, not what is planned.

How is student data encrypted?
All data is encrypted in transit using TLS 1.2 or 1.3, and at rest using AES-256. The database sits on LUKS2-encrypted storage, uploaded documents are encrypted by Cloudflare R2, and backups are encrypted before they are written. Sensitive documents (identification, results) are kept in private storage with no public URL and opened only through time-limited signed links, so they cannot be found by guessing a URL. Passwords are hashed using Argon2 and never stored in reversible form.
Who can access my school's student data?
Only staff at your school with the appropriate role can access your students' data. The platform enforces strict tenant isolation. Staff at one school cannot see data belonging to another. Educoda engineers can access data for support purposes, but this access is logged. You can review the school staff who have access to your portal at any time from the Users section.
Can admissions staff see sensitive student data before a place is confirmed?
Not in Admissions Code mode, which is on by default for new schools (existing schools switch it on from their settings). Before a student submits their enrolment on results day, staff see only what bears on the school's published admission arrangements: name, date of birth, sex, contact details, address, one parent or carer contact, UPN where the school requires it, current school, looked after status, course choices and the student's own grades. Ethnicity, nationality, languages, religion, SEN, FSM, medical and dietary needs, further emergency contacts, future plans, ID documents, ULN, UCI and references are held in the student's P16 profile and unlock when they submit their enrolment. This follows the School Admissions Code and the January 2026 adjudicator determination on sixth form application software.
Do you support two-factor authentication?
Yes. TOTP-based two-factor authentication (compatible with Google Authenticator, Authy, and any TOTP app) is available for all users. You can configure specific roles to require MFA. Users in those roles will be forced to set up 2FA before they can access the platform. All superuser and platform admin accounts require MFA by policy.
Do you support SSO or SAML?
Not currently. SSO (SAML / OIDC) integration is on our product roadmap for schools that require it as part of their IT policy. At present, authentication is handled via email and password with optional TOTP 2FA. Contact us if SSO is a requirement for your procurement process.
How are payments handled? Is card data stored?
Payments are processed entirely by Stripe. When a student pays, they are redirected to a Stripe-hosted checkout page. No card numbers, CVV codes, or bank details ever pass through or are stored on our servers. We store only the payment status (paid, waived, refunded) and a Stripe-issued session reference. Stripe is PCI DSS Level 1 certified.
How do you handle GDPR erasure requests?
School administrators can submit a GDPR erasure request for any student directly from the platform. The request is logged (who requested it, when, and why) and the student's personal data is erased. The erasure log is retained as required for compliance accountability. For erasure requests from students directly, please contact [email protected].
How do you handle security vulnerabilities?
We operate a responsible disclosure policy. If you discover a security vulnerability, please email [email protected]. We ask that you give us reasonable time to investigate and remediate before public disclosure. We will acknowledge your report within 2 business days and aim to resolve critical issues within 7 days. We do not currently offer financial rewards but will credit researchers who report valid issues if they wish to be acknowledged.
Where is data stored? Is it within the UK?
The database and application servers are hosted by Hetzner in Nuremberg, Germany. Uploaded files are stored in Cloudflare R2's EU region, and backups are held in Germany and in Cloudflare R2's EU region. Transactional email is sent from Amazon Web Services' London region. Error monitoring uses Sentry's EU region, with names, email addresses and IP addresses removed before anything is sent. The UK recognises the EEA as giving adequate protection to personal data. Our privacy policy lists every service provider and where it operates.

Found a security issue?

We welcome responsible disclosure. If you have found a vulnerability, please email us directly. We take all reports seriously and respond within 2 business days.

Security contact

[email protected]

Privacy contact

[email protected]

Please include a clear description of the issue, steps to reproduce, and potential impact. We ask that you do not access or modify data belonging to others and give us a reasonable window to address the issue before public disclosure.

View security.txt

See it against your own admissions process

A 15 to 30 minute walkthrough, a price based on your student numbers, and a one-week trial environment if you want one.