Validated the expected paywall
The assessment started from the normal unpaid-student journey. The lesson page correctly blocked paid content and prompted enrollment in the browser.
Selected project
Authorized testing found the browser paywall worked, but the backend lesson API still returned paid lesson content to logged-out direct requests.
The assessment started from the normal unpaid-student journey. The lesson page correctly blocked paid content and prompted enrollment in the browser.
Public course metadata exposed lesson identifiers. A logged-out request to the lesson API returned a successful response with paid-content fields still present.
The same behavior repeated against a second paid lesson, while adjacent payment, progress, instructor, and assessment APIs rejected unauthorized access.
The report mapped the issue to OWASP broken access control, recommended object-level checks, and retained only sanitized metadata rather than paid lesson bodies.
Redacted AppSec evidence
Domains, course names, lesson titles, user identifiers, cookies, and paid lesson bodies are redacted. The public artifacts show the control boundary, observed response shape, test matrix, root cause, and safer response model.
Redacted report
The report includes the executive summary, finding metadata, OWASP and CWE mappings, sanitized proof, impact analysis, root-cause explanation, remediation guidance, and retest checklist. The evidence handling notes explain how sensitive content was kept out of the public artifact.
Download redacted DOCX reportAssessment workflow