Re: [whatwg/fetch] Separate DNS timing info from proxy resolution (PR #1429)

This raises a current privacy issue that the PR doesn't cover.

Given all the different values of connection timing info, it's tricky to obfuscate the existence of a proxy from consumers of resource/navigation timing, which should not have access to this information.

Considering a proxy that takes a second to resolve, where is this second?
- If it's in a gap between DNS resolution and connection, it's easily detectable
- If it's inside DNS resolution, it's detectable by using `dns-prefetch` or IP addresses as hosts
- If it's inside redirect or before redirects, it's detectable by fetching a resource that doesn't have redirects.

I'm proposing that the (only?) place where the proxy can be safely obfuscated is in the last bit (`responseEnd`). To do that, I propose that fetch keeps the time spent in proxy resolution, and to subtract it from all the timings between `domainLookupStart` and `responseEnd`. Those timings would become less accurate in this occasion, but representative of what would have happened if there wasn't a proxy, and the proxy time is still embedded in the total duration.

/cc @achristensen11 @mikewest @yoavweiss





-- 
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/fetch/pull/1429#issuecomment-1110876103
You are receiving this because you are subscribed to this thread.

Message ID: <whatwg/fetch/pull/1429/c1110876103@github.com>

Received on Wednesday, 27 April 2022 11:13:42 UTC