Skip to main content
Critical for Production UseAdCP handles financial commitments and potentially sensitive campaign data. Implementations managing real advertising budgets must implement the security controls outlined in this document.

Overview

AdCP operates in a high-stakes environment where:
  • Financial transactions involve real advertising spend
  • Multi-party trust requires coordination between Principals, Publishers, and Orchestrators
  • Sensitive data includes first-party signals, pre-launch creatives, and competitive targeting strategies
  • Asynchronous operations span multiple systems and protocols

Risk Classification

High-Risk Operations (Financial)

These operations commit real advertising budgets: Requirements:
  • Short-lived credentials (tokens expiring in ≤15 minutes)
  • Request signing for transaction integrity
  • Multi-factor authentication or approval workflows for large budgets
  • Full audit trail with immutable logging

Medium-Risk Operations (Data Access)

These operations access sensitive business data:

Low-Risk Operations (Discovery)

These operations are publicly accessible:

Webhook Security

Signature Verification

Always verify webhook authenticity:

Replay Attack Prevention

Use timestamps and event IDs to prevent replay attacks:

Authentication Best Practices

Credential Storage

Token Expiration

Use short-lived tokens for high-risk operations:

Principal Isolation

Multi-Tenant Security

Orchestrators managing multiple principals must enforce strict isolation:

Row-Level Security

Implement row-level security in your database:

Financial Transaction Safety

Idempotency

All state-changing operations must support idempotency:

Budget Validation

Validate budgets before committing:

Transport Security

HTTPS Requirements

  • All AdCP communications must use HTTPS with TLS 1.3+ (TLS 1.2 minimum)
  • Validate SSL certificates (no self-signed certificates in production)
  • Implement HTTP Strict Transport Security (HSTS) headers

Input Validation

Request Validation

Validate all user-provided input:

SQL Injection Prevention

Always use parameterized queries:

Audit Logging

Required Log Events

Log all security-relevant events:

Log Retention

  • Security logs: 90 days minimum (365 days recommended)
  • Financial logs: 7 years (compliance requirement)
  • Access logs: 30 days minimum

Security Checklist

For Publishers (AdCP Servers)

  • Implement strong authentication (OAuth 2.0, API keys, or mTLS)
  • Enforce principal isolation in all database queries
  • Implement idempotency for financial operations
  • Validate all input with strict schema validation
  • Use TLS 1.3+ for all communications
  • Verify webhook signatures cryptographically
  • Log all security events immutably

For Principals (AdCP Clients)

  • Store credentials in secure key management system
  • Rotate credentials every 90 days
  • Use HTTPS for all AdCP communications
  • Validate responses from publishers
  • Implement alerts for unusual spending patterns

For Orchestrators (Multi-Principal Agents)

  • Store each principal’s credentials separately (encrypted)
  • Enforce principal_id filtering in ALL queries
  • Use row-level security in databases
  • Log all operations with principal identity
  • Implement per-principal rate limiting

Next Steps