diff --git a/mimesniff.bs b/mimesniff.bs index 5c773c9..be6e228 100644 --- a/mimesniff.bs +++ b/mimesniff.bs @@ -139,7 +139,7 @@ production. By definition it is a superset of the HTTP token code points.
A whitespace byte (abbreviated - 0xWS) is any one of the following + 1xWS) is any one of the following bytes: 0x09 (HT), 0x0A (LF), 0x0C (FF), 0x0D (CR), 0x20 (SP). @@ -2752,6 +2752,566 @@ type: +
protected".
+
+   Abort these steps.
+
+  protected" if
+   CORB confirmation sniffing for HTML
+   algorithm returns "confirmed HTML".
+
+   Otherwise the CORB confirmation sniffing result is "allowed".
+
+   Abort these steps.
+
+
+
+  protected" if
+   CORB confirmation sniffing for XML
+   algorithm returns "confirmed XML".
+
+   Otherwise the CORB confirmation sniffing result is "allowed".
+
+   Abort these steps.
+
+  text/css", then
+   the CORB confirmation sniffing result is "protected" if
+   JSON security prefix sniffing
+   algorithm returns "JSON security prefix is present".
+   (and is "allowed" otherwise).
+
+   "text/css" needs to be excluded, because
+   valid CSS may contain a JSON security prefix.  See also
+   fetch/corb/style-css-with-json-parser-breaker.sub.html
+   in Web Platform Tests.
+ 
This step intentionally ignores some characters that are
+      considered to be whitespace
+      by Javascript,
+      but not
+      by HTML
+      (for example <NBSP> and/or <ZWNBSP>).  These characters will be
+      dealt with in a later step and result in "maybe not HTML".
+
+    
<!--" string), then:
+      -->" string).
+        The step above advances past characters that are between "-->"
+          and a Javascript line terminator,
+          because such characters are considered to be Javascript comments according to
+          the HTMLCloseComment rule.
+      
confirmed HTML".
+      Otherwise return "possibly not HTML".
+    The table below is the text/html-specific subset
+ of the table used for
+ identifying a resource with an unknown MIME type
+ (excluding the pattern covering HTML comments which are dealt with separately).
+
+ 
| + Byte Pattern + + | + Pattern Mask + + | + Leading Bytes to Be Ignored + + | + Note + + + + | 
|---|---|---|---|
| + 3C 21 44 4F 43 54 59 50 45 20 48 54 4D 4C TT + + | + FF FF DF DF DF DF DF DF DF FF DF DF DF DF FF + + | + Whitespace bytes. + + | +     The case-insensitive string " <!DOCTYPE HTML"
+     followed by a tag-terminating byte.
+
+
+ | 
| + 3C 48 54 4D 4C TT + + | + FF DF DF DF DF FF + + | + Whitespace bytes. + + | +     The case-insensitive string " <HTML" followed by a
+     tag-terminating byte.
+
+
+ | 
| + 3C 48 45 41 44 TT + + | + FF DF DF DF DF FF + + | + Whitespace bytes. + + | +     The case-insensitive string " <HEAD" followed by a
+     tag-terminating byte.
+
+
+ | 
| + 3C 53 43 52 49 50 54 TT + + | + FF DF DF DF DF DF DF FF + + | + Whitespace bytes. + + | +     The case-insensitive string " <SCRIPT" followed by
+     a tag-terminating byte.
+
+
+ | 
| + 3C 49 46 52 41 4D 45 TT + + | + FF DF DF DF DF DF DF FF + + | + Whitespace bytes. + + | +     The case-insensitive string " <IFRAME" followed by
+     a tag-terminating byte.
+
+
+ | 
| + 3C 48 31 TT + + | + FF DF FF FF + + | + Whitespace bytes. + + | +     The case-insensitive string " <H1" followed by a
+     tag-terminating byte.
+
+
+ | 
| + 3C 44 49 56 TT + + | + FF DF DF DF FF + + | + Whitespace bytes. + + | +     The case-insensitive string " <DIV" followed by a
+     tag-terminating byte.
+
+
+ | 
| + 3C 46 4F 4E 54 TT + + | + FF DF DF DF DF FF + + | + Whitespace bytes. + + | +     The case-insensitive string " <FONT" followed by a
+     tag-terminating byte.
+
+
+ | 
| + 3C 54 41 42 4C 45 TT + + | + FF DF DF DF DF DF FF + + | + Whitespace bytes. + + | +     The case-insensitive string " <TABLE" followed by
+     a tag-terminating byte.
+
+
+ | 
| + 3C 41 TT + + | + FF DF FF + + | + Whitespace bytes. + + | +     The case-insensitive string " <A" followed by a
+     tag-terminating byte.
+
+
+ | 
| + 3C 53 54 59 4C 45 TT + + | + FF DF DF DF DF DF FF + + | + Whitespace bytes. + + | +     The case-insensitive string " <STYLE" followed by
+     a tag-terminating byte.
+
+
+ | 
| + 3C 54 49 54 4C 45 TT + + | + FF DF DF DF DF DF FF + + | + Whitespace bytes. + + | +     The case-insensitive string " <TITLE" followed by
+     a tag-terminating byte.
+
+
+ | 
| + 3C 42 TT + + | + FF DF FF + + | + Whitespace bytes. + + | +     The case-insensitive string " <B" followed by a
+     tag-terminating byte.
+
+
+ | 
| + 3C 42 4F 44 59 TT + + | + FF DF DF DF DF FF + + | + Whitespace bytes. + + | +     The case-insensitive string " <BODY" followed by a
+     tag-terminating byte.
+
+
+ | 
| + 3C 42 52 TT + + | + FF DF DF FF + + | + Whitespace bytes. + + | +     The case-insensitive string " <BR" followed by a
+     tag-terminating byte.
+
+
+ | 
| + 3C 50 TT + + | + FF DF FF + + | + Whitespace bytes. + + | +     The case-insensitive string " <P" followed by a
+     tag-terminating byte.
+ | 
confirmed XML".
+  Otherwise return "possibly not XML".
+ The table below is the text/xml-specific subset
+ of the table used for
+ identifying a resource with an unknown MIME type.
+
+ 
| + Byte Pattern + + | + Pattern Mask + + | + Leading Bytes to Be Ignored + + | + Note + + | 
|---|---|---|---|
| + 3C 3F 78 6D 6C + + | + FF FF FF FF FF + + | + Whitespace bytes. + + | +     The string " <?xml".
+ | 
JSON security prefix is present".
+  Otherwise return "no JSON security prefix".
+ | + Byte Pattern + + | + Pattern Mask + + | + Leading Bytes to Be Ignored + + | + Note + + | 
|---|---|---|---|
| + 29 5D 7D 27 + + | + FF FF FF FF + + | + None. + + + | +     The string " )]}'".
+Parser breaker + built into angular.js (followed by a comma and a newline), + built into the Java Spring framework (followed by a comma and a space) + and observed on google.com (without a comma, followed by a newline). + + | 
| + 7B 7D 26 26 + + | + FF FF FF FF + + | + None. + + | +     The string " {}&&'".
+Parser breaker + used by Apache struts. + + | 
| + 7B 7D 20 26 26 + + | + FF FF FF FF FF + + | + None. + + | +     The string " {} &&'".
+Parser breaker + used by Spring framework (historically). + + | 
| + 66 6F 72 28 3B 3B 29 3B + + | + FF FF FF FF FF FF FF FF + + | + None. + + | +     The string " for(;;);".
+Infinite loop + observed on facebook.com + + | 
| + 66 6F 72 20 28 3B 3B 29 3B + + | + FF FF FF FF FF FF FF FF FF + + | + None. + + | +     The string " for (;;);".
+Infinite loop. + + | 
| + 77 68 69 6C 65 28 31 29 3B + + | + FF FF FF FF FF FF FF FF FF + + | + None. + + | +     The string " while(1);".
+Infinite loop. + + | 
| + 77 68 69 6C 65 20 28 31 29 3B + + | + FF FF FF FF FF FF FF FF FF FF + + | + None. + + | +     The string " while (1);".
+Infinite loop. + + + | 
@@ -2964,6 +3524,7 @@ type: Jonathan Neal, Joshua Cranmer, Larry Masinter, + Łukasz Anforowicz, 罗泽轩, Mariko Kosaka, Mark Pilgrim,