Hash-chain audit logs, content-aware upload safety, explicit per-page permissions — real security primitives, engineered in. Every claim on this page maps to source you can inspect.
Most audit logs are write-only. Ours is a hash chain re-verified on a schedule, and re-verified again before any batch is emitted to an external SIEM.
Every security event carries the SHA-256 hash of the prior event. Breaking a record in the middle breaks every record after it — tampering is self-evident.
A background job re-walks the chain on a schedule and alerts on any mismatch. This isn't a one-time integrity check at write — it's ongoing.
Before any batch ships to an external SIEM, the chain is re-verified. If preflight fails, the batch never leaves — nothing compromised reaches downstream tooling dressed as authentic.
Events covered: authentication, authorization, data access, admin actions, and security signals (rate limits, anomalies, brute-force detection).
Most document products inherit permissions from parent folders. One wrong drag-and-drop and a personal folder is suddenly visible to the whole team. PageSpace doesn't inherit.
Grant access to a folder and the folder page is shared. Every page inside still has its own grant list. No page becomes visible because of where it lives in the tree.
The "I shared one subfolder and accidentally gave away the tree" class of incident can't happen here. Every shared page was shared on purpose.
Drive owners and admins still have full drive access by role — this is no-silent-cascades for end users, not deny-by-default for operators.
The class of bugs that ship as CVEs in open-source workspace tools — uploaded executables renamed to .txt, SSRF to cloud metadata, path-traversal to read the server filesystem. We did the unglamorous work.
The Magika ML classifier inspects the bytes. Windows PE, macOS Mach-O, Linux ELF, Android DEX — all rejected even when renamed to .txt. Same for raw HTML, SVG, and JavaScript, the classic stored-XSS vectors.
Server-side URL fetches are checked against loopback, RFC 1918 private ranges, link-local, and cloud metadata endpoints. Every DNS-resolved IP is validated, not just the first — an attacker rebinding a hostname after the initial check still gets rejected.
Uploads and user-supplied paths are rejected for ../, URL-encoded variants (%2e%2e, double-encoded), null-byte injection, and symlink escape. Real paths are verified, not string-compared.
Passwordless by design: passkeys and magic links, with Google and Apple OAuth. There's no password to phish, guess, or leak.
Secure magic link authentication with single-use tokens and rate-limited delivery.
Industry-standard OAuth flows with signed state and strict redirect validation. Google uses RFC 7636 PKCE; Apple relies on ID-token signature validation.
All state-changing requests require CSRF validation with HMAC-signed tokens and timing-safe comparison. Even login forms have CSRF protection via a separate pre-login system.
PageSpace uses opaque session tokens with hash-only storage. Tokens carry no embedded claims — everything is validated server-side on every request.
We never store the session token itself — only its SHA3-256 hash. A compromised database snapshot does not yield usable tokens.
Sessions can be revoked immediately — no waiting for expiry. Administrative actions invalidate every outstanding session for a user atomically.
Real-time collaboration doesn't mean relaxed security. Every write operation is authorized in real-time.
Document updates, file uploads, and task changes are re-authorized on every event — not just at connection time.
Socket tokens are short-lived and single-purpose, limiting exposure if intercepted. Connection requires fresh authentication.
Inter-service communication is signed and replay-protected so messages cannot be forged or re-sent by an intermediary.
Protection against brute force attacks with rate limiting that persists across restarts and IP changes.
Per-IP and per-email sliding-window limits throttle credential stuffing
Accounts facing repeated failed authentication are temporarily locked, regardless of source IP
Per-IP limits on signup prevent automated account creation
Lockout state isn't lost when servers restart
Attackers can't bypass by changing IP addresses
Lockout expires on its own — no manual intervention needed
Our docs point straight at the code that implements every claim. Read them, grep them, hand them to your security reviewer.
Search docs, blog posts, and more.