Security

Practical protections designed for embedded widgets on real customer websites.

Domain allowlist

Only approved domains can load a widget’s configuration, preventing widget-id misuse.

CSRF protection

Critical dashboard actions require CSRF tokens, reducing cross-site request attacks.

Rate limiting

Public endpoints apply a basic per-IP throttle to reduce abuse and unexpected AI costs.

Scoped iframe policy

Embedding is allowed for /embed while /app and /admin remain protected against clickjacking.

Server-side AI key

Your OpenAI key is never exposed to the browser; all calls happen from the server.

Audit-ready logs

Conversations and messages are stored in MySQL so you can review, export, and improve.

Recommended operational steps

  • After installation, set app/config.php to read-only (CHMOD 444).
  • Delete the /install folder after setup is complete.
  • Set strong admin passwords and rotate keys periodically.
  • Use Cloudflare (WAF + rate limiting) for an additional protective layer.