v144 · security · demo
Safe XML Parser
A developer tool for auditing XML entity declarations. Write or paste any XML with <!ENTITY> declarations, click Parse XML, and inspect which entities are internal (safe), which are external (blocked in Chrome 144+), and what the parsed DOM actually contains.
Chrome 144 security fix: DOMParser no longer fetches external entities declared via SYSTEM or PUBLIC identifiers. External entity references expand to the empty string instead of triggering a network (or file system) read. Parameter entities referencing external DTDs are likewise ignored. This tool shows you exactly what a post-144 parser sees.
load an example:
entity audit
Entity declarations from your XML will appear here after parsing.
parsed DOM tree
The parsed document tree will appear here after parsing.
how it works
This tool uses DOMParser.parseFromString(xml, 'text/xml') exactly as you would in production code. The entity audit panel scans your source XML with a regex to find <!ENTITY> declarations and classifies them before the parser even runs. The DOM tree panel reflects what the parser actually returned, so you can compare what was declared versus what was resolved.
const parser = new DOMParser();
const doc = parser.parseFromString(xmlString, 'text/xml');
// Chrome 144+: external SYSTEM/PUBLIC entities → empty string
// Internal entities → still expanded normally
// Parameter entities referencing external DTDs → ignored
const err = doc.querySelector('parseerror'); // present on malformed XML
const root = doc.documentElement; // your actual content
entity type reference
| declaration form | type | Chrome 144 behaviour |
|---|---|---|
<!ENTITY name "value"> |
internal | expanded normally — safe |
<!ENTITY name SYSTEM "uri"> |
external SYSTEM | blocked — expands to empty string |
<!ENTITY name PUBLIC "id" "uri"> |
external PUBLIC | blocked — expands to empty string |
<!ENTITY % name SYSTEM "uri"> |
parameter (external) | blocked — DTD not fetched |
<!ENTITY % name "value"> |
parameter (internal) | may expand within DTD subset |
see also
- Externally-loaded entities in XML parsing — feature index
- XXE Probe — single-payload overview
- XXE Side-by-Side — safe vs external comparison
- XXE Payload Replay — canonical OWASP payload catalogue
- ChromeStatus entry