Problem mit embed
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
-
Ich habe einen Blog, bei dem ich auch gelegentlich Charts einbinde. Das erfolgt etwa so
<embed src="/charts/inflation-usa-02-erdoel-effektiv.php" type="image/svg+xml" style="width:95%">
Diese PHP-Datei erzeugt einen Chart im SVG-Format mit Hilfe dieser Bibliothek.
Jetzt habe ich festgestellt, dass in diversen Beiträgen, in denen früher die Anzeige der Charts einwandfrei funktioniert, jetzt nichts mehr zu sehen ist. Die Charts an sich sind noch in Ordnung, man kann sie auch als Einzelseiten aufrufen. Ich suche jetzt verzweifelt nach der Fehlerquelle. Das einzige, was sich im Verlaufe der zeit geändert hat ist eigentlich Firefox. Ist <embed...> jetzt obsolet? Hat jemand eine Idee, woran es sonst liegen könnte?
Wenn ich die Charts mit <img...> einbinde sind sie zu sehen. Allerdings kann man mit img bestimmte Möglichkeiten der Bibliothek nicht ausnutzen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
welche PHP version läuft auf dem Server? Überprüf mal, dann könnte es sein, dass du die Semantik der PHP Datei anpassen müsstest, je nachdem wie das aufgesetzt ist.
-
Da läuft
PHP Version 7.3.11-1+0~20191026.48+debian9~1.gbpf71ca0
Bin da selbst admin. -
Hast du geprüft, ob die Semantik in der PHP Datei passt?
Ich denke es liegt nicht an der "embed" Funktion, sondern eher an der PHP. Du kannst aber neben der Breite auch die Höhe mal angeben vlt. auch als fixen Wert, um die Seite zu zwingen diesen Platz zu reservieren. Nicht dass es einen Konflikt beim Platz gibt, sodass das mit Höhe 0 angezeigt wird.
Am Ausdruck ist vorerst nichts auszusetzen. -
Danke für die Hinweise. Ich kann zwar mit
Semantik in der PHP Datei
nicht viel anfangen, aber ich habe inzwischen die Fehlerquelle lokalisiert. Es ist anscheinend das von mit verwendete CMS (Yellow CMS). Da hatte ich vor einiger Zeit ein Update gemacht und die Fehlfunktion nicht bemerkt.
Ich habe nämlich jetzt eine einfache HTML-Datei zum Test erstellt und da läuft alles korrekt. Muss jetzt mal schauen, was da genau beim CMS los ist und ggf. mit den Programmierern in Kontakt treten. -
OK, dann hast du ja den Fehler bereits.
Semantik einer PHP Datei bedeutet so viel wie ein korrekter sinngemäßer Aufbau gemäß den Anforderungen der Version im Bezug auf PHP.
Ich kenne solche Semantikprobleme bereits zwischen mehreren PHP Versionen. Habe bei PHP V2 angefangen, bis zur Version 5 gab es da semantische Neuerungen, die Änderungen ntwendig machten und zur Version 7 war es ähnlich.
Von daher dachte ich, dass ggf. ein solches Problem vorliegt, was dazu gefhrt hat, dass es nicht geht, allem voran, da du mitgeteilt hast dass es "früher" ging, ohne darauf einzugehen, was früher bedeutet. -
Ich bin der Sache noch weiter auf den Grund gegangen. Vorweg muss ich noch erwähnen, dass bei dem CMS die Inhaltsseiten in Markdown erstellt werden. Man kann aber, wie oft in solchen Fällen, auch direkt HTML-Code einfügen. Nun haben aber die Macher des CMS bei einem Versionswechsel eine Whitelist für HTML-Code eingeführt. HTML-Tags, die nicht drin sind werden nicht umgesetzt. Ich habe zum Einfügen meiner Charts embed genutzt und das ist nicht drin.
Auf meine Nachfrage warum wurde ich darauf verwiesen, dass embed unsicher sei, siehe hier
https://owasp.org/www-community/xss-filter-evasion-cheatsheet
Was haltet ihr davon?
Beitrag zuletzt geändert: 24.6.2020 18:45:33 von mein-wunschname -
Naja, was ist schon wirklich sicher?
Aber mal ernst, haben die dir wenigstens ne adäquate ALternative benannt, mit der du das Thema "embed" umgehen kannst? oftmals gibt es ja wenigstens 2 Möglichkeiten der Darstellung gleicher Dinge, somit sollten die doch als Veröffentlicher in der Lage sein, da Unterstützung zu bieten, was statt embed sicherer ist und auf der Whitelist zu finden -
Alternativen:
Ich nutze ja ein PHP-Framework. Dort gibt es bereits mehrere Möglichkeiten der Einbindung
https://www.goat1000.com/svggraph-using.php
Allerdings haben die dort genannten Möglichkeiten mit img und iframe wiederum andere Nachteile und object funktioniert genauso wenig wie embed.
Ich habe daher zunächst mal die Core-Funktionen des CMS "aufgebohrt". Die endgültige Lösung ist das noch nicht, weil ev. nicht absolut sicher. Nach der endgültigen Lösung suche ich noch. -
Bei Elementen wie img oder embed können bei den Brausern absichtlich gewisse Funktionen eingeschränkt sein (etwa Interaktivität, JavaScript), weil die Brauser an den Stellen traditionell Sicherheitslücken haben, welche so improvisiert geschlossen werden.
embed sollte generell nicht verwendet werden, weil es immer eine bessere Lösung gibt, steht schon so in der ersten Version von HTML5 ;o)
Von daher solltest du zunächst prüfen, ob das SVG direkt aufgerufen wie gewünscht funktioniert. Wenn nicht, liegt es entweder am SVG oder an den Fähigkeiten des Brausers.
Hast du letzteres ausgeschlossen, beginnt wohl die aufwendige Fehlersuche im SVG.
Wenn das SVG solo korrekt funktioniert, hängt es vermutlich am eingeschränkten Funktionsumfang der Brauser für solche Elemente.
Je nachdem, was du verwendet hast, kannst du eventuell das SVG geeignet ändern, also statt Animation/Interaktion per JavaScript die in SVG vorhandene deklarative Methode verwenden.
Ansonsten kannst du auch das Element object verwenden, wenn es mit img, embed, iframe Probleme gibt. Zudem kannst du den SVG-Quelltext auf einfach direkt etwa in ein Element figure in das (X)HTML-Dokument ausgeben.
Wenn es allerdings weder mit object noch mit SVG direkt im (X)HTML funktioniert, kommen wir zu dem Punkt zurück, bei welchem ein Fehler direkt im SVG vorliegt ;o) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage