Skip to main content

Security Overview

Last updated: April 2026

FeatureSignals is designed as critical infrastructure for your applications. This document provides a comprehensive overview of the security controls built into the product.

info

This document describes technical security controls that are implemented in FeatureSignals. Where we reference compliance frameworks (SOC 2, GDPR, HIPAA, ISO 27001), we describe how our controls map to those framework requirements. This does not constitute a formal certification unless explicitly stated.

Architecture Security

Hexagonal Architecture

FeatureSignals uses a hexagonal (ports & adapters) architecture that enforces strict separation of concerns:

  • Domain layer: Pure business logic with zero infrastructure dependencies
  • Handlers: HTTP adapter — validates input, delegates to domain
  • Store: Database adapter — implements persistence contracts
  • Evaluator: Stateless flag evaluation engine

This architecture prevents common vulnerability classes:

  • SQL injection is impossible in domain/handler code (no SQL there)
  • Business logic cannot be bypassed via infrastructure shortcuts
  • Each layer can be independently tested and audited

Multi-Tenancy Isolation

MechanismDescription
Middleware enforcementOrganization ID extracted from JWT, injected into context, checked on every request
Query scopingAll database queries include org_id in WHERE clause
404 for cross-org accessReturns "not found" (not "forbidden") to prevent entity existence leakage

Authentication & Authorization

Authentication Methods

MethodUse CaseImplementation
JWT (access token)Dashboard / Management API1-hour TTL, refresh token rotation (7 days)
API KeyServer SDKs / Evaluation APISHA-256 hashed, shown once at creation
SSO (SAML 2.0)Enterprise identity providerOkta, Azure AD, OneLogin, etc.
SSO (OIDC)Enterprise identity providerAny OIDC-compliant IdP
MFA (TOTP)Second factorRFC 6238 TOTP, compatible with Google Authenticator, Authy

Authorization Model

Four built-in roles with escalating privileges:

PermissionViewerDeveloperAdminOwner
Read flags, projects, segmentsYesYesYesYes
Create/edit flagsNoYesYesYes
Toggle flags (production)NoPer-envYesYes
Manage team membersNoNoYesYes
Billing, API keys, SSONoNoNoYes

Per-environment permissions allow granular control:

  • can_toggle: Allow/deny flag state changes in specific environments
  • can_edit_rules: Allow/deny targeting rule modifications in specific environments

Data Protection

Encryption

LayerStandard
In transitTLS 1.3 (minimum TLS 1.2)
At restAES-256 (database, backups)
Passwordsbcrypt (cost factor 12)
API keysSHA-256 one-way hash
Audit integritySHA-256 chain hashing

Input Validation

  • All JSON decoders use DisallowUnknownFields() to prevent mass-assignment
  • Request body limited to 1 MB
  • SQL queries use parameterized statements exclusively
  • User input never interpolated into queries

Security Headers

All responses include:

  • Content-Security-Policy
  • Strict-Transport-Security (HSTS, max-age 1 year, includeSubDomains)
  • X-Content-Type-Options: nosniff
  • X-Frame-Options: DENY
  • Referrer-Policy: strict-origin-when-cross-origin
  • Permissions-Policy (restricted camera, microphone, geolocation, payment)
  • Cross-Origin-Opener-Policy: same-origin
  • Cross-Origin-Resource-Policy: same-origin
  • Cross-Origin-Embedder-Policy: require-corp

Token Revocation

Server-side token revocation ensures that logged-out sessions are immediately invalidated:

  • Every JWT includes a unique jti (JWT ID) claim
  • On logout, the jti is added to a revocation store
  • Every authenticated request checks the revocation store
  • Expired revocation entries are cleaned up hourly by the scheduler

Network Security

Rate Limiting

Endpoint TypeLimit
Authentication (login, register)20 requests/minute
Management API100 requests/minute
Evaluation API1,000 requests/minute

IP Allowlisting (Enterprise)

Restrict management API access to specific IP ranges (CIDR notation). The evaluation API is not restricted to ensure SDK connectivity.

Audit & Monitoring

Audit Trail

Every mutating operation is recorded with:

  • Timestamp (UTC, RFC 3339)
  • Actor identity (user ID, email)
  • Action name and resource type/ID
  • Before/after state for modifications
  • Client IP address and user agent
  • SHA-256 integrity hash (chain-linked to previous entry)

Audit logs are exportable in JSON and CSV formats.

Structured Logging

  • JSON-formatted logs to stdout (12-factor compliant)
  • Request ID correlation across all log entries
  • Organization/tenant scoping on all log entries
  • No secrets, tokens, or PII in log output

Vulnerability Management

Automated Scanning

ToolTargetFrequency
govulncheckGo dependenciesEvery CI run
npm auditNode.js dependenciesEvery CI run
TrivyContainer imagesEvery build

Dependency Management

  • Explicit dependency declaration (go.mod, package.json)
  • Automated vulnerability scanning in CI pipeline
  • No transitive dependency with known critical CVEs

Incident Response

We maintain a documented incident response plan with:

  • Defined severity levels (Sev 1–4)
  • Response time SLAs per severity
  • Escalation procedures
  • Customer notification timelines
  • Post-mortem process

Full incident response plan available under NDA for Enterprise customers.

Self-Hosted Security

For organizations requiring complete data sovereignty:

  • Deploy on your own infrastructure (Docker, Kubernetes, bare metal)
  • No data ever leaves your network
  • Full control over encryption keys, backup procedures, network policies
  • Same security features as cloud-hosted version

Responsible Disclosure

Report vulnerabilities to security@featuresignals.com. We respond within 48 hours and coordinate disclosure timelines with reporters.