Antwort an „Rolf B“ verfassen

problematische Seite

Hallo Ryuno-Ki,

du schriebst:

Das stimmt nicht unbedingt. Wenn etwa eine Permission Policy gesetzt wird, die nicht allow="storage-access" führt, dann wird der Browser den Zugriff auf localStorage mit einem Fehler quittieren.

Ich bin an der Ecke noch nicht so tief eingestiegen, aber ich verstehe das Permission API so, dass es hier darum geht, das Sandboxing von 3rd-Party Komponenten zu umgehen.

Fallbesipiel: In wiki.selfhtml.org setze ich localStorage.setItem("Foo", "123"). Nun rufe ich mit einem sicherheitsbewussten Browser die Seite example.org/raubwiki auf, die das Self-Wiki in einem iframe einbindet. Liest das Wiki dort localStorage.getItem("Foo"), bekommt es NICHT "123", sondern null, weil der Browser den localStorage partitioniert und mir den Storage für "wiki.selfhtml.org-in-example.org" unterschiebt.

WENN das Wiki auf den unpartitionierten localStorage zugreifen will - also die localStorage-Instanz, die es ohne iframing hätte, dann muss es das Permission-API verwenden und Zugriff beantragen.

Was ich aber unabhängig davon gefunden habe, ist eine SecurityException, die man beim Zugriff auf localStorage oder sessionStorage bekommen kann, wenn der Origin kein HTTP- oder HTTPS-Schema verwendet (sondern beispielsweise file: oder data:). Und es kann sein, dass "Die Anforderung (...) eine Richtlinienentscheidung (verletzt). Zum Beispiel, wenn der Benutzer die Browser so konfiguriert hat, dass verhindert wird, dass die Seite Daten speichert.". Schreibt der KI-Übersetzknecht von MDN

Also, ja, Storage-Container sind nichts für leichtsinnige Gemüter. Die Anzahl der Security-Tretminen, um die man heute herumnavigieren muss, wird immer umfangreicher.

Rolf

--
sumpsi - posui - obstruxi
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen