Skip to content
Freehold CMSSelf-hosted PHP website software.
Downloads soon

Security Responsibilities for Developers

Freehold CMS supplies shared security controls, but every route, query, file operation, provider callback and custom module still has its own implementation responsibilities.

Request and authorization boundary

Authenticate administrative work, check the required capability, validate request intent, constrain identifiers and enforce ownership before reading or mutating a record. A hidden button is not an access control.

Data and file boundary

Use prepared database operations, encode output for its context, restrict uploads by purpose and location, keep private configuration outside public storage and avoid returning sensitive implementation detail to the visitor.

Security checks

  • Authentication and capability checks.
  • Request-intent validation.
  • Prepared database access.
  • Context-appropriate output encoding.
  • Constrained upload paths and types.
  • Secret and private-file protection.
  • Safe provider callback verification.

Review the entire sensitive action

For an upload, account change, order update or provider callback, record the authenticated actor, required capability, request-intent check, constrained identifiers, ownership rule, database operation, file work, output encoding and safe failure response. A secure form control cannot compensate for an exposed server credential.

Next: production operations

Secure code still depends on controlled cache behavior, maintenance and recovery.

Read Caching and Operations.