SECURITY

Rate Limiting & Security

Oh My School includes enterprise-grade built-in security features to protect sensitive student data.

Dynamic Rate Limiting

To prevent brute-force attacks and automated scraping, Oh My School implements configurable rate limiting:

  • IP-Based Lockout: You can configure the maximum number of attempts per IP address per service.
  • Temporary Lockout: If a client exceeds the threshold, they will experience a temporary lockout from that specific service, while other services remain unaffected.
  • Configurable Limits: Limits can be set directly in the service settings via the admin panel.

End-to-End Payload Encryption

For high-security environments, Oh My School supports optional End-to-End Encryption (E2EE) for public search requests:

  • RSA + AES Hybrid Encryption: When enabled, the search payload is encrypted on the client side (student's browser) using a public key and decrypted on the server using the private key.
  • Protection Beyond HTTPS: This provides an extra layer of security, ensuring that even if HTTPS traffic is inspected or terminated at a reverse proxy, the search queries and results remain encrypted in transit until processed by the core engine.
  • Toggleable: This setting is configurable per deployment and can be toggled on/off in the application settings dashboard.

Best Practices

  • Always Use HTTPS: In production, route your application traffic through a reverse proxy (like Nginx, Caddy, or Traefik) to terminate SSL/TLS.
  • Enable Payload Encryption: Turn on RSA + AES payload encryption for highly sensitive portals (such as Exam Scores or Admission Announcements).
  • Tune Lockout Thresholds: Set conservative rate limits for high-stakes services to mitigate brute-force lookups.

Still have questions?

If you could not find what you were looking for, the community is here to help on GitHub Discussions.

Ask the Community