Parental consent records maintained with timestamp, method, parent identity
Why it matters
COPPA §312.6 grants parents the right to review the information collected from their child and to revoke consent at any time. Without a durable consent record, an operator cannot verify that consent was obtained, cannot respond to a parental review request with evidence, and cannot trace whether a specific child account was legitimately authorized. If the FTC investigates and the operator cannot produce records showing when consent was given, by whom, and via which method, the absence of records is treated as an absence of consent. The consent record is also the anchor for the parent's revocation rights — without it, revocation cannot be cleanly executed.
Severity rationale
Medium because the absence of consent records does not itself expose child data, but it strips the operator's legal defense and makes parental review and revocation mechanically impossible to fulfill.
Remediation
Create a dedicated parental_consents table that stores the child account link, parent identifier, consent method, and timestamp. Write the record before activating the child account.
-- Migration: create parental_consents table
CREATE TABLE parental_consents (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
child_user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
parent_email TEXT NOT NULL,
method TEXT NOT NULL, -- 'email_link', 'signed_form', etc.
consented_at TIMESTAMPTZ NOT NULL DEFAULT now(),
revoked_at TIMESTAMPTZ,
metadata JSONB DEFAULT '{}'
);
// Record consent before creating the child user record
await db.parentalConsent.create({
data: {
childUserId: child.id,
parentEmail: pending.parentEmail,
method: 'email_link',
consentedAt: new Date(),
metadata: { ip: req.headers.get('x-forwarded-for'), tokenUsed: params.token }
}
})
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the COPPA Compliance Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- coppa · §312.6 — Parental review of child information — operator must maintain records sufficient to honor review requests
- coppa · §312.5 — Verifiable parental consent — records of consent must be retained to demonstrate compliance
- cwe · CWE-778 — Insufficient Logging — consent event not recorded creates a compliance audit gap
- iso-27001:2022 · A.8.15 — Logging — audit records of consent actions preserved
Taxons
History
- 2026-04-18·v1.0.0·Initial import from coppa-compliance·automated