Skip to content

Commit eccd05c

Browse files
committed
Block access to :: and 0.0.0.0
Fixes #1117.
1 parent 4cb3cf2 commit eccd05c

File tree

1 file changed

+26
-7
lines changed

1 file changed

+26
-7
lines changed

fetch.bs

+26-7
Original file line numberDiff line numberDiff line change
@@ -2743,6 +2743,26 @@ functionality.
27432743
<a for=/>network partition key</a> <var>key</var> and an <a for=/>origin</a> <var>origin</var>:
27442744
<!-- Should we assert the scheme here to be an HTTP(S) scheme or a WebRTC scheme? -->
27452745

2746+
<ol>
2747+
<li><p>Let <var>ipAddresses</var> be the result of running <a>resolve an origin internal</a> given
2748+
<var>key</var> and <var>origin</var>.
2749+
2750+
<li><p>If <var>ipAddresses</var> is failure, then return failure.
2751+
2752+
<li><p>If <var>ipAddresses</var> <a for=set>contains</a> <code>::</code> or <code>0.0.0.0</code>,
2753+
then return failure.
2754+
2755+
<li><p>Return <var>ipAddresses</var>.
2756+
</ol>
2757+
2758+
<p>The results of <a>resolve an origin</a> may be cached. If they are cached, <var>key</var> should
2759+
be used as part of the cache key.
2760+
</div>
2761+
2762+
<div>
2763+
<p>The <dfn>resolve an origin internal</dfn> algorithm, given a <a for=/>network partition key</a>
2764+
<var>key</var> and an <a for=/>origin</a> <var>origin</var>, runs these steps:
2765+
27462766
<ol>
27472767
<li><p>If <var>origin</var>'s <a for=origin>host</a> is an <a for=/>IP address</a>, then return
27482768
« <var>origin</var>'s <a for=origin>host</a> ».
@@ -2753,7 +2773,8 @@ functionality.
27532773

27542774
<li>
27552775
<p>Perform an <a>implementation-defined</a> operation to turn <var>origin</var> into a
2756-
<a for=/>set</a> of one or more <a for=/>IP addresses</a>.
2776+
<a for=/>set</a> of one or more <a for=/>IP addresses</a>, taking <var>key</var> into account as
2777+
appropriate.
27572778

27582779
<p>It is also <a>implementation-defined</a> whether other operations might be performed to get
27592780
connection information beyond just <a for=/>IP addresses</a>. For example, if <var>origin</var>'s
@@ -2767,16 +2788,13 @@ functionality.
27672788
<li><p>Return failure.
27682789
</ol>
27692790

2770-
<p>The results of <a>resolve an origin</a> may be cached. If they are cached, <var>key</var> should
2771-
be used as part of the cache key.
2772-
27732791
<div class=note>
27742792
<p>Typically this operation would involve DNS and as such caching can happen on DNS servers without
27752793
<var>key</var> being taken into account. Depending on the implementation it might also not be
27762794
possible to take <var>key</var> into account locally. [[RFC1035]]
27772795

2778-
<p>The order of the <a for=/>IP addresses</a> that the <a>resolve an origin</a> algorithm can return
2779-
can differ between invocations.
2796+
<p>The order of the <a for=/>IP addresses</a> that the <a>resolve an origin internal</a> algorithm
2797+
can return can differ between invocations.
27802798

27812799
<p>The particulars (apart from the cache key) are not tied down as they are not pertinent to the
27822800
system the Fetch Standard establishes. Other documents ought not to build on this primitive without
@@ -9015,6 +9033,7 @@ done only by navigations). The <a>fetch controller</a> is also used to
90159033
<p>Thanks to
90169034
Adam Barth,
90179035
Adam Lavin,
9036+
Alain Emilia Anna Zscheile<!-- fogti; GitHub -->,
90189037
Alan Jeffrey,
90199038
Alexey Proskuryakov,
90209039
Andreas Kling,
@@ -9026,7 +9045,7 @@ Arkadiusz Michalski,
90269045
Arne Johannessen,
90279046
Artem Skoretskiy,
90289047
Arthur Barstow,
9029-
Arthur Sonzogni, <!-- ArthurSonzogni; GitHub -->
9048+
Arthur Sonzogni<!-- ArthurSonzogni; GitHub -->,
90309049
Asanka Herath,
90319050
Axel Rauschmayer,
90329051
Ben Kelly,

0 commit comments

Comments
 (0)