nadar/quill-delta-parser
A PHP library that parses Quill WYSIWYG editor Delta JSON into sanitized HTML. Every element is handled by the same flexible, extendable mechanism, making custom elements easy to add, output safer, and the parser simple to understand and customize. Install via Composer.
link, image, video) were written into rendered href/src attributes without validation. Unsafe schemes (e.g. javascript:) are now neutralized—links resolve to #, images and videos are not rendered. This converts an open security finding into a routine dependency bump, and removes the need to build sanitization in our own application layer.$safeSchemes per listener), so custom Quill modules and non-standard schemes remain supported without forking—while defaulting to safe behavior.ftp://, tel: variants, internal deep links) will see those outputs change until the allowlist is extended.$safeSchemes before upgrading to avoid silent output changes:
$link = new Link();
$link->safeSchemes = ['http', 'https', 'mailto', 'tel', 'ftp'];
$lexer->overwriteListener(new Link(), $link);
symfony/process and phpunit/phpunit bumps are dev/tooling only—no runtime dependency risk.For Executives:
"A security patch landed in our Quill delta parser: 3.7.1 fixes a stored XSS vulnerability where malicious link, image, or video URLs (e.g. javascript: payloads) could execute in users' browsers when rendered from rich-text content. The fix is upstream, backward-compatible for default configurations, and available as a low-risk patch—including a backport to the 3.5.x line. For [Product X], this closes a security gap in any user-generated content surface (comments, CMS pages, profiles) without custom engineering, avoiding an estimated 1–2 months of build and ongoing maintenance for an in-house sanitizer, and removing a likely finding from our next security review. Action: schedule the upgrade this sprint and confirm no workflows depend on custom URL schemes."
For Engineering:
*"3.7.1 is a security release (GHSA-q7wv-vg5w-462j). URI schemes from delta attributes (link, image, video) are now validated against an allowlist before being written into rendered href/src. Unsafe schemes are neutralized: links render href="#", images/videos are dropped. Key implications:
ftp://, tel:, slack://, internal deep links), extend per-listener before deploying:
$link = new Link();
$link->safeSchemes = ['http', 'https', 'mailto', 'tel', 'ftp'];
$lexer->overwriteListener(new Link(), $link);
symfony/process and phpunit/phpunit bumps are dev-only; no runtime surface. Changelog also migrated to GitHub Releases—update our internal release-tracking links.
Recommend treating 3.7.1 as the minimum pin for all services rendering untrusted deltas, and adopting the font-size support from 3.7.0 for [Feature Y] (CMS typography controls) in the same upgrade."How can I help you explore Laravel packages today?