Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Base64-Kodierung wird nicht immer benötigt, ihre derzeitige Anwendung entpackt Inhalte ggfs zu früh #44

Open
denkspuren opened this issue May 21, 2024 · 0 comments

Comments

@denkspuren
Copy link
Owner

Um beliebige Textinhalte kompatibel mit den Anforderungen an Server Sent Events zu halten, werden die Daten zu einem SSE derzeit per Base64 serverseitig kodiert und clientseitig im Browser dekodiert. Grund ist, dass SSEs grundsätzlich als Text mit einem doppelten \n (Zeilenumbruch) am Ende verschickt werden. Tauchen im Text selber doppelte Zeilenumbrüche auf, ist das nicht vom eigentlichen Textende zu unterscheiden und erzeugt Probleme.

Die derzeitige Implementierung selber ist nicht ganz problemfrei:

  • Wenn alle SSEs eine Base64-Kodierung erfahren, erhöht das den Payload um rund ein Drittel und kostet beidseitig Rechenzeit zur beständigen Kodierung und Dekodierung. Das ist z.B. für die vielen SSEs bei Turtle-Grafiken ein Overhead ohne jegliche Notwendigkeit.

  • Im LVP setzt sich jedes SSE aus einer Aktion und den mitgelieferten Daten zusammen. Im Fall etwa der Aktion SCRIPT werden die Daten dekodiert und in den Rumpf eines öffnenden und schließenden script-Tags eingesetzt. Dabei könnte z.B. ein unbalancierter enkodierter HTML-Text die Script-Struktur zerstören. Der sollte zunächst enkodiert bleiben und erst im Gebrauchsfall dekodiert werden.

@denkspuren denkspuren changed the title Base64-Kodierung wird nicht immer benötigt, ihre derzeitige Anwendung entpackt Inhalte zu früh Base64-Kodierung wird nicht immer benötigt, ihre derzeitige Anwendung entpackt Inhalte ggfs zu früh May 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant