Expected Findings
- Stored XSS through draft and post content.
- Form preview reflects unsanitized input into HTML.
- Editor surface is reachable without auth.
- Validation only checks presence, not content safety.
Editors can submit arbitrary HTML and the public page renders it raw. A separate form-preview flow also reflects user input directly back into HTML without escaping it.
The app only checks for non-empty text before storing.
if (body.trim().length > 0) saveDraft(body)
preview.innerHTML = form.title