This is now continuing to removal in M145, I landed a removal change before
the branch point for M145
<https://chromium-review.googlesource.com/c/chromium/src/+/7415378>.

On Fri, Nov 21, 2025 at 2:14 PM Mike Taylor <[email protected]> wrote:

> This makes a lot of sense, thanks.
> On 11/21/25 4:54 a.m., 'Dominik Röttsches' via blink-dev wrote:
>
> Hello all,
>
> this has now landed and is slated to be released in M144
> <https://chromium-review.googlesource.com/c/chromium/src/+/7173078>.
> During preparing the deprecation CL, it was found that in XSLT mode the
> parser allows loads not only of external entities, but also external DTDs
> (which go through the same network load function). In order not to
> interfere with the separate deprecation timeline of XSLT
> <https://groups.google.com/a/chromium.org/g/blink-dev/c/CxL4gYZeSJA/m/yNs4EsD5AQAJ>,
> we we only deprecate external entity loads for non XSLT situation (and do
> not block them at the network fetch level, but through a parser setting
> change).
>
> Dominik
>
>
>
> On Thursday, November 13, 2025 at 2:29:15 PM UTC+2 Philip Jägenstedt wrote:
>
>> Is this feature controlled by something in
>> runtime_enabled_features.json5? If so, I think the enterprise policy is
>> quite easy to add, and just doing it could be easier than pondering the
>> compat risk.
>>
>> However, we have to keep the policy for some number of milestones so it
>> would delay the deletion of the code.
>>
>> I don't have a strong view, happy with whatever you think is best,
>> Dominik.
>>
>> Den tors 13 nov. 2025 01:48Dominik Röttsches <[email protected]> skrev:
>>
>>> > Such external load requests are passed up from the parser and allowed
>>> only if they are a same origin request and the response mimetype matches:
>>> application/xml-external-parsed-entity.
>>>
>>> One correction:
>>> The mimetype restriction does not apply: External entities are loaded
>>> even without mimetype checking when X-Content-Type-Options: nosniff is
>>> not set.
>>>
>>> Also, additional details were found regarding overlaps with XSLT
>>> processing:
>>>
>>> XMLDocumentParser OpenFunc is called in multiple situations. Detailed 
>>> analysis
>>> here <https://issues.chromium.org/u/1/issues/455813733#comment4>. In
>>> XSLT processing context, external loads for DTD and external entities are
>>> currently allowed.
>>> With these findings, I only intend to deprecate and remove this for non
>>> XSLT situations.
>>>
>>> Even though the usage is very low overall, there is no need to risk XSLT
>>> breakage and cause interference between this deprecation and the XSLT
>>> deprecation.
>>>
>>> Dominik
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Fri, Oct 31, 2025 at 5:03 PM Dominik Röttsches <[email protected]>
>>> wrote:
>>>
>>>> *Contact emails*
>>>> [email protected]
>>>>
>>>> *Explainer*
>>>> No information provided
>>>>
>>>> *Specification*
>>>> https://www.w3.org/TR/xml/#proc-types
>>>>
>>>> *Summary*
>>>> Chrome synchronously fetches external XML entities/DTDs and
>>>> incorporates them into parsing under specific circumstances. I propose to
>>>> remove this functionality.
>>>>
>>>> Test case xml-external-entity.xml
>>>> <https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/http/tests/security/contentTypeOptions/xml-external-entity.xml>
>>>> gives an example:
>>>>
>>>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
>>>>         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";
>>>> [
>>>> <!ENTITY entity_application_xml_external_parsed_entity SYSTEM "
>>>> http://127.0.0.1:8000/security/contentTypeOptions/resources/script-with-header.pl?mime=application/xml-external-parsed-entity
>>>> ">
>>>> ...
>>>>
>>>> External entities can be defined in the trailing part of the DOCTYPE
>>>> statement - and then refer to resources that are to be synchronously loaded
>>>> and included as context when parsing XML.
>>>>
>>>> Another syntax example would be a DOCTYPE that, using the SYSTEM
>>>> keyword followed by a URL pointing to a DTD which contains additional
>>>> entity definitions.
>>>>
>>>> Such external load requests are passed up from the parser and allowed
>>>> only if they are a same origin request and the response mimetype matches:
>>>> application/xml-external-parsed-entity.
>>>>
>>>> According to https://www.w3.org/TR/xml/#proc-types non-validating
>>>> processor are not required to read external entities.
>>>>
>>>> *Blink component*
>>>> DOM
>>>>
>>>> *Web Feature ID*
>>>> Falls under XML feature group, but did not see a specific parsing
>>>> feature.
>>>>
>>>> *Motivation*
>>>> The usage has continuously decreased and is at an extremely low level
>>>> of 0.000015, compare:
>>>> https://chromestatus.com/metrics/feature/timeline/popularity/529 We
>>>> intend to improve the security of XML parsing in Chrome. (See internal
>>>> go/chrome_x_mitigation).
>>>>
>>>> In this effort, we intend to replace libxml2 as the XML parser with an
>>>> XML parser written in Rust (crate "xml"). The Rust-based XML parser we
>>>> intend to migrate to, does not support external entities and we don't think
>>>> it's necessary or desirable to implement this feature.
>>>>
>>>> Synchronous loads during parsing are considered inefficient, and can be
>>>> avoided by inlining the needed entity definitions.
>>>>
>>>> As usage is so low, Firefox never supported this
>>>> <https://bugzilla.mozilla.org/show_bug.cgi?id=22942#c135>, I propose
>>>> to deprecate in 144, and remove in 145.
>>>>
>>>> *Initial public proposal*
>>>> No information provided
>>>>
>>>> *Debuggability*
>>>> Parsing success/failure is debuggable, same as before.
>>>>
>>>> *Requires code in //chrome?*
>>>> No
>>>>
>>>> *Tracking bug*
>>>> https://crbug.com/455813733
>>>>
>>>> *Estimated milestones*
>>>> Starting deprecation in 144
>>>>
>>>> Shipping on desktop 144
>>>> Shipping on Android 144
>>>> Shipping on WebView 144
>>>>
>>>> Link to entry on the Chrome Platform Status
>>>> https://chromestatus.com/feature/6734457763659776?gate=4825690713227264
>>>>
>>>> This intent message was generated by Chrome Platform Status.
>>>>
>>> --
>>>
>> You received this message because you are subscribed to the Google Groups
>>> "blink-dev" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>>
>> To view this discussion visit
>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAN6muBtw13D8r8yp7-iSN%3DsOQO%2B0aDshjUbivj0nLucadQDu4w%40mail.gmail.com
>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAN6muBtw13D8r8yp7-iSN%3DsOQO%2B0aDshjUbivj0nLucadQDu4w%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "blink-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion visit
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/dd69c855-bbe4-4f3f-b284-764c12f435dan%40chromium.org
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/dd69c855-bbe4-4f3f-b284-764c12f435dan%40chromium.org?utm_medium=email&utm_source=footer>
> .
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAN6muBtAF_mKhkOZiZKc7J%2BFQ56DZbkF%3Dw79FnQEa2-hJgymcg%40mail.gmail.com.

Reply via email to