Donnerstag, 13. April 2023

Sicherheitsfeatures im neuen Edge-Browser-Steuerelement (Teil 2)

Im letzten Beitrag ging es um "Vertrauenswürdige Domänen" im neuen Edge-Browser-Steuerelement. Natürlich kann man auch lokale Dateien in das neue Steuerelement laden. Was dabei zu beachten ist, erläutert dieser Beitrag.

Für den ersten Versuch mit einer lokalen Datei habe ich mir folgende kleine HTML-Datei geschrieben:

Es handelt sich um eine simple HTML-Datei mit fast keinem Inhalt. Am Ende wird "Hello World" angezeigt. 

Im Edge-Browser-Steuerelement habe ich als Steuerelementinhalt folgendes eingetragen: =[currentproject].[path] & "\1_Demo_NoScript.html". Danach habe ich das Formular geöffnet und wurde überrascht. Die Datei wird nicht im Edge-Browser-Steuerelement angezeigt. Stattdessen öffnet sich mein Chrome und zeigt die Webseite an.

Dieses Vorgehen (Anzeige im externen Browser-Fenster) kenne ich schon von meinen ersten Versuchen mit dem Edge-Browser-Steuerelement. Die Anzeige im externen Browser erfolgt aus Sicherheitsgründen bei einem Redirect. Der Verdacht liegt nahe, dass dieses Verhalten beim Aufruf einer lokalen Datei ebenfalls ein Sicherheitsfeature darstellt.

Ich habe also ein weiteres Mal im Artikel von Mike Wolfe nachgesehen. Dort bin ich schnell fündig geworden. Dem Pfad zu einer lokalen Datei muss das Präfix "https://msaccess/" vorangestellt werden. Als Steuerelementinhalt habe ich dann folgenden Ausdruck eingetragen: ="https://msaccess/" & [currentproject].[path] & "\1_Demo_NoScript.html".
Danach wird die Datei wie gewünscht im Edge-Browser-Steuerelement angezeigt.

Dabei wird man jedoch ganz schön auf die Folter gespannt. Es dauert ungefähr 3 Sekunden, bis die Datei im Steuerelement angezeigt wird. Ich schätze, dass hier eine Sicherheitskomponente von Office zuschlägt und erst einmal meine lokale Datei auf böswilligen Inhalt hin untersucht.

Im nächsten Schritt habe ich eine kleine, einfache JavaScript-Funktion in die HTML-Datei eingefügt:

Der Aufruf der Datei im Edge-Browser-Steuerelement funktioniert wie erwartet: Es wird ein Alert angezeigt. Nachdem dieser bestätigt wird, erscheint "Hello World".

Die nächste Stufe der Komplexität ist, die JavaScript Funktion in eine gesonderte Datei auszulagern und diese auf eine Webseite hochzuladen. Von dort wird die JavaScript-Datei dann mittels Script-Tag in die HTML-Datei eingefügt:

Das Ganze funktioniert wie erwartet. Wieder wird der Alert angezeigt und nach dessen Bestätigung erscheint "Hello World" im Browser-Steuerelement.

Als nächstes habe ich die JavaScript Datei als lokale Datei in die HTML-Datei eingebunden:

Das Ergebnis ist leider nicht wie erwartet. Nach ca. 3 Sekunden wird direkt "Hello World" angezeigt. Der JavaScript Alert wird nicht angezeigt.

Nachdem wir uns ja in einem Browser-Steuerelement und damit im Web befinden, habe ich die "\" im Pfad durch "/" ersetzt:

Leider führt auch dies nicht zur gewünschten Lösung. Auch in diesem Fall wird der JavaScript Alert nicht angezeigt.

Der nächste Schritt ist, ganz auf den Pfad zu verzichten. Die JavaScript-Datei und die HTML-Datei liegen ja schließlich im selben Verzeichnis:

Das Ergebnis hat mich kurz überrascht: Es funktioniert. Damit wird dann klar, dass das Problem an der Pfad-Angabe liegt. Das Edge-Browser-Steuerelement darf nicht auf D:\User\... zugreifen. Dieser Gedanke führt dann am Ende zu der Idee, auch diesem Pfad das Präfix "https://msaccess/" voranzustellen:

Das Ergebnis ist dann wie gewünscht: Der Alert erscheint und nach dessen Bestätigung erscheint "Hello Word".

Damit ist auch diese Reise durch das Sicherheitsfeature des neuen Edge-Browser-Steuerelement abgeschlossen.

Fazit: Um den Zugriff vom Edge-Browser-Steuerelement auf das lokale Dateisystem zu ermöglichen, muss dem Dateipfad immer das Präfix "https://msaccess/" vorangestellt werden. Dies gilt sowohl für die HTML-Datei, die im Browser-Steuerelement angezeigt werden soll als auch für Dateien, die aus der HTML-Datei heraus aufgerufen werden.

Keine Kommentare: