diff --git a/xep-0363.xml b/xep-0363.xml index 37985292..54f64d5b 100644 --- a/xep-0363.xml +++ b/xep-0363.xml @@ -32,6 +32,20 @@ daniel@gultsch.de daniel@gultsch.de + + 1.1.0 + 2022-01-04 + egp, mb + + + + 1.0.0 2020-02-11 @@ -249,7 +263,7 @@ ]]> -

A client requests a new upload slot by sending an IQ-get to the upload service containing a <request> child element qualified by the urn:xmpp:http:upload:0 namespace. This element MUST include the attributes filename and size containing the file name and size respectively.

+

A client requests a new upload slot by sending an IQ-get to the upload service containing a <request> child element qualified by the urn:xmpp:http:upload:0 namespace. This element MUST include the attributes filename and size containing the file name and size (in bytes) respectively.

An additional attribute content-type containing the Content-Type is OPTIONAL.

]]>

The upload service responds with both a PUT and a GET URL wrapped by a <slot> element. The service SHOULD keep the file name and especially the file ending intact. Using the same hostname for PUT and GET is OPTIONAL. The host MUST provide Transport Layer Security (&rfc5246;). Both HTTPS URLs MUST adhere to &rfc3986;. Non ASCII characters MUST be percent-encoded.

-

The <put> element MAY also contain a number of <header> elements which correspond to HTTP header fields. Each <header> element MUST have a name-attribute and a content with the value of the header. Only the following header names are allowed: Authorization, Cookie, Expires. Other header names MUST be ignored by the requesting entity and MUST NOT be included in the HTTP request. The requesting entity MUST strip any newline characters from the header name and value before performing the HTTP request.

+

The <put> element MAY also contain a number of <header> elements which correspond to HTTP header fields. Each <header> element MUST have a name-attribute and a content with the value of the header. Only the following header names are allowed: Authorization, Cookie, Expires. The allowed headers provided in the response MUST be included in the HTTP PUT request. Other header names MUST be ignored by the requesting entity and MUST NOT be included in the HTTP request. The requesting entity MUST strip any newline characters from the header name and value before performing the HTTP request, but MUST preserve the relative order of multiple values for the same header in the request. Each header name MAY be present zero or more times, and are case insensitive (eXpires is the same as Expires).

+

Clients SHOULD NOT interpret headers and treat them as opaque.

@@ -353,6 +368,7 @@ Content-Security-Policy: default-src 'none'; frame-ancestors 'none'; ]]>

The provided policy will prohibit a browser from executing all active content from the HTTP upload domain (default-src 'none') and forbid embedding it from other pages (frame-ancestors 'none'). More information on Content-Security-Policy can be found on infosec.mozilla.org.

Further isolation can be achieved by hosting those files on an entirely different domain instead of using subdomains.

+

Headers may be signed so that receiving HTTP entities can verify these haven't been tempered with by clients.