Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Security for applications

The security rules an Exponential application follows - permissions on every entry point, input validation, output escaping, form tokens, safe redirects, uploads, secrets, CSP-ready markup, logging and disclosure - with…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/creators/app-creators/security-for-applications.md

On this page

Security for applications

This page is for application creators who want their code as safe as the kernel around it. Each rule names the kernel feature that helps; the standards page maps them to the OWASP Top 10 (Security standards).

Contents

  1. The rules
  2. Entry points to secure
  3. Before you ship
  4. Reporting vulnerabilities

The rules

RuleKernel helpRead
Check permissions in every view, server function, fetch and servicefunctions in module.php, hasAccessTo(), canRead()Access control in code
Validate and cast all inputeZHTTPTool, module actionsInput validation and output escaping
Escape all output|wash in templatessame
Protect POST formsezformtokenForms, CSRF protection and HTTP input
SQL only with escaping and casts, or eZPersistentObjectescapeString()Database access and SQL
Redirect only within the sitesafe redirect checksSafe redirects
Store uploads through the kernelimage and file datatypes; SVG sanitizerSVG images
No inline scripts or stylesthe Content Security PolicyContent Security Policy for your code
No secrets in code, payloads or logssettings/override/Environment settings and secrets
Record security-relevant actionsthe audit trailAudit trail
Outgoing requests only to allowed hoststhe link check's private-network rule as a modelURLs and links

Entry points to secure

Every way into your code needs its own check:

  • module views (module.php functions plus your own checks for limitations);
  • ezjscore server functions (ezjscore does not check a policy for you);
  • REST controllers (the framework authenticates; you authorize);
  • fetch functions and template operators (templates can be called from anywhere);
  • cronjobs, commands and queue handlers (run as the right user; validate stored input again).

Before you ship

  • To do: Every entry point checked with a user who lacks the permission.
  • To do: Every printed value escaped; no raw HTML from users.
  • To do: Forms post with tokens; no state change on GET.
  • To do: Uploads checked by type and size, stored through the kernel.
  • To do: No secrets in the repository (git log -p searched).
  • To do: Pages produce no reports in var/log/csp.log.
  • To do: Errors do not show stack traces to visitors; debug output off in production.
  • To do: Dependencies current; Composer packages pinned to maintained versions.

Reporting vulnerabilities

Vulnerabilities in Exponential are reported privately as SECURITY.md in the repository describes, not in public issues (When something goes wrong). Give your own extension a SECURITY.md with a private contact, too.

Become an Exponential Partner

Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x