Ich hab ja vor einer Weile herumgerantet, dass ich HTTP/2 für einen Rückschritt halte. Meine Hauptbeschwerde bei neuen tollen Framework-Standards ist ja die explodierende Komplexität, die zu kaputten Implementationen führen wird. Und tatsächlich ist ein aktueller Feldversuch etwa so vernichtend, wie man sich das denken würde. Mit so Bugs wie:

CVE-2019-9511 “Data Dribble”: The attacker requests a large amount of data from a specified resource over multiple streams. They manipulate window size and stream priority to force the server to queue the data in 1-byte chunks. Depending on how efficiently this data is queued, this can consume excess CPU, memory, or both, potentially leading to a denial of service.

CVE-2019-9513 “Resource Loop”: The attacker creates multiple request streams and continually shuffles the priority of the streams in a way that causes substantial churn to the priority tree. This can consume excess CPU, potentially leading to a denial of service.

Und noch ein Haufen dieser Art mehr. Welcher Vollpfosten hat sich denn bitte gedacht, dass es eine gute Idee ist, in einem Protokoll der anderen Seite diese Art von Freiheiten einzuräumen?! Das Protokoll ist schlicht ein Clusterfuck, und die einzige Implementation, die ich überhaupt erwägen würde, ist eine großflächig lobotomierte.

Dass HTTP/2 jetzt Header-Kompression kann, löst ein Problem, dass wir uns völlig ohne Not selbst zugefügt haben. Niemand hat uns gezwungen, dass eine typische Webseite Hunderte von Requests lostreten muss. Mein Blog löst üblicherweise drei Requests aus. Und niemand hat uns gezwungen, so viele Cookies zu setzen, dass das ein Problem wird.

Das mit dem Multiplexing ist, wie ich hier schon ausführte, aus meiner Sicht eher ein Nachteil als ein Vorteil. Wenn die Leitung Paketverlust hat und stockt, dann bleibt bei HTTP/2 alles stehen, während bei HTTP/1 nur irgendein Inline-Bild stockt.

Und Pipelining geht auch in HTTP/1. Es trauen sich nur die meisten nicht zu benutzen, weil es da draußen angeblich irgendwelche kaputten Server gibt, die das nicht können. Ja, äh, na und? Die benutzt man dann halt nicht.

13.08.2019