Remote XML Lokale XSL
Sucher
- xml
Hallo Zusammsen,
ich habe ein kleines (?) Sicherheitsproblem im Firefox 3. Das ist auch gut so, aber in meinem Falle schlecht! Ich habe eine XML Infodatei die ich mit einem XSL Stylesheet nach HTML transformiere. Lokal und Remote ist das kein Problem. Wenn ich aber die XML Datei vom Server lade und auf eine lokale XSL Datei zugreifen möchte zB.:..."file:///C:/temp/temperatur.xsl".... bringt mir (zurecht!) die Firefox Fehlerkonsole eine Sicherheitsmeldung, dass man auf den lokalen File nicht zugreifen darf.
Ist das grundsätzlich nicht möglich?
Bin für jegliche Tipps (Links) dankbar.
Beispiel: (XML)vom Server:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="file:///C:/temp/temperatur.xsl"?>
<test>
<ort>
<sensor>Wohnzimmer</sensor>
<temperatur>22,3 °C</temperatur>
</ort>
<ort>
<sensor>Keller</sensor>
<temperatur>10,3 °C</temperatur>
</ort>
<sensor>Speicher</sensor>
<temperatur>15,3 °C</temperatur>
<ort>
<sensor>Vorlauf</sensor>
<temperatur>67,3 °C</temperatur>
</ort>
</test>
Lokale XSL Datei:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method='html' version='1.0' encoding='UTF-8' indent='yes'/>
<xsl:template match="/">
<html>
<body>
<center>
<h2>TEST Transformator</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th align="left">Beschreibung</th>
<th align="left">Temperatur</th>
</tr>
<xsl:for-each select="test/ort">
<tr>
<td><xsl:value-of select="sensor"/></td>
<td><xsl:value-of select="temperatur"/></td>
</tr>
</xsl:for-each>
</table>
</center>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Wo soll hier das Sicherheitsproblem liegen? Ich vermute einfach mal, dein Parser hat keine Leserecht fuer die xsl Datei (welcher Rechte hat der Parser und wie sind die Rechte fuer den Zugriff auf die Stylesheet datei gesetzt?). Das hat aber nichts mit sicherheitsheitrisiko zu tun.
Wo soll hier das Sicherheitsproblem liegen? Ich vermute einfach mal, dein Parser hat keine Leserecht fuer die xsl Datei (welcher Rechte hat der Parser und wie sind die Rechte fuer den Zugriff auf die Stylesheet datei gesetzt?). Das hat aber nichts mit sicherheitsheitrisiko zu tun.
Also zumindest auf der Fehlerkonsole vom Firefox kommt folgende Meldung:
Sicherheitsfehler: Inhalt auf http://localhost/TestWeb/temperaturen.xml darf file:///C:/temp/temperatur.xsl nicht laden oder verlinken.
Sicherheitrisiko ist das schon, das ist mir bewußt. Oder möchtest Du dass eine fremde Seite auf Deine lokalen Dateien zugreifen kann?
Wie gesagt lokal geht das und auch wenn beide Dateien (xml und xsl) auf dem Server liegen...
Tut mir leid, aber deine Erklaerung ist unverstaendlich. Ich sehe immer noch kein Sicherheitsrisiko. Vielleicht koenntest du mal erklaeren, wo das Risiko liegt. Aber ich werde wohl nie die Denkweise von Windows verstehen.
Tut mir leid, aber deine Erklaerung ist unverstaendlich. Ich sehe immer noch kein Sicherheitsrisiko. Vielleicht koenntest du mal erklaeren, wo das Risiko liegt. Aber ich werde wohl nie die Denkweise von Windows verstehen.
Hallo
@Holger die Sicherheitmeldung kommt ja vom Firefox 3 warum auch immer. Mein Problem ist doch nach wie vor:
==>Ich möchte von einem Server im lokalen Netzwerk eine XML Datei laden und ==>mit einem lokalen XSL Stylesheet mit dem Firefox darstellen.
Warum das Ganze: Ich habe zur Steuerung und Temperaturefassung ein "kleines" Mikroprozessorsystem mit nem HTTP-Server am lokalen Ethernet hängen. Da die Funktionalität und die Resourcen auf dem Mikro knapp sind erzeuge ich dort nur eine XML-Ausgabe, die ich dann mit dem Firefox visualisieren möchte.
Das ist nach wie vor mein Problem!
Lade ich die XML datei auf meinen lokalen Rechner und verwende das lokale Stylesheet ist alles so wie ichs gerne hätte. Siehe Eingangspost.
MfG
Achim
Ok, jetzt scheine ich dein Problem verstanden zu haben. Du solltest aber wissen, dass sich die processing-instruction beim abruf der xml vom server
<?xml-stylesheet type="text/xsl" href="file:///C:/temp/temperatur.xsl"?>
nach meinem Wissensstand auf das temp verzeichnis deines servers bezieht, und nicht auf dein lokales verzeichnis. Ich verstehe auch nicht ganz, warum du deine xsl nicht einfach mit auf den server legst, selbst wenn er langsam ist, der server muss nur die xml und die xsl weiterreichen, das parsen wird dann vom browser uebernommen, soweit dieser XML faehig ist. Siehe auch beispiel auf selfhtml.org hier <http://de.selfhtml.org/xml/darstellung/xsltbeispiele.htm#grussbeispiel@title=zweiter link des beispiels bzgl. xslt faehiger browser>. Die Last deines Servers duerfte nur minimal sein, wenn er das stylesheet mit bereitstellen muss, es sei denn du hast ein X MB grosses stylesheet, was aber eigentlich keinen sinn macht.
Wenn du aber wirklich nicht deine xsl files auf den server legen moechtest, kann du immer noch eine leere xml (mindestens ein knoten) lokal auf deinen rechner ablegen. Die verknuepfst du mit einer processing instruction auf ein lokales stylesheet. Im stylesheet rufst du dann einfach die xml datei vom server ab um wandelst die um, der unterschied ist dann lediglich, dass du anstatt die xml datei vom server, einfach eine lokale xml datei aufrufst. Also etwa so:
lokales XML File
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="lokal.xsl"?>
<empty/>
lokales XSL File
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates select="document('http://serveraddress/server.xml')" mode="lokal-transform"/>
</xsl:template>
<xsl:template ..... mode="lokal-transform">
.
.
.
</xsl:template>
</xsl:stylesheet>
Gruss, H.
Ok, jetzt scheine ich dein Problem verstanden zu haben. Du solltest aber wissen, dass sich die processing-instruction beim abruf der xml vom server
<?xml-stylesheet type="text/xsl" href="file:///C:/temp/temperatur.xsl"?>
nach meinem Wissensstand auf das temp verzeichnis deines servers bezieht, und nicht auf dein lokales verzeichnis. Ich verstehe auch nicht ganz, warum du deine xsl nicht einfach mit auf den server legst, selbst wenn er langsam ist, der server muss nur die xml und die xsl weiterreichen, das parsen wird dann vom browser uebernommen, soweit dieser XML faehig ist. Siehe auch beispiel auf selfhtml.org hier <http://de.selfhtml.org/xml/darstellung/xsltbeispiele.htm#grussbeispiel@title=zweiter link des beispiels bzgl. xslt faehiger browser>. Die Last deines Servers duerfte nur minimal sein, wenn er das stylesheet mit bereitstellen muss, es sei denn du hast ein X MB grosses stylesheet, was aber eigentlich keinen sinn macht.
Wenn du aber wirklich nicht deine xsl files auf den server legen moechtest, kann du immer noch eine leere xml (mindestens ein knoten) lokal auf deinen rechner ablegen. Die verknuepfst du mit einer processing instruction auf ein lokales stylesheet. Im stylesheet rufst du dann einfach die xml datei vom server ab um wandelst die um, der unterschied ist dann lediglich, dass du anstatt die xml datei vom server, einfach eine lokale xml datei aufrufst. Also etwa so:
lokales XML File
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="lokal.xsl"?>
<empty/>
>
>
> lokales XSL File
> ~~~xml
> <?xml version="1.0" encoding="iso-8859-1"?>
> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:template match="/">
> <xsl:apply-templates select="document('http://serveraddress/server.xml')" mode="lokal-transform"/>
> </xsl:template>
> <xsl:template ..... mode="lokal-transform">
> .
> .
> .
> </xsl:template>
> </xsl:stylesheet>
>
Gruss, H.
»»
Hallo
@Holger, wenn das so funktionieren würde hätte ich das sogar verstanden. Leider bekomme ich da diesen "Sicherheitsfehler vom Firefox.
Anscheinend ist es nicht möglich von einem lokalen XSL Zugriff mit
...select="document('http://localhostTestWeb/temperaturen.xml'....
zu bekommen.
==>Ausgabe Firefox Fehlerkonsole<===
Sicherheitsfehler: Inhalt auf file:///D:/atmel_PATZ/XML/lokal.xml darf keine Daten von http://localhost/TestWeb/temperaturen.xml laden.
==>Ausgabe Firefox Fehlerkonsole<===
Falls ich aber ==>http://localhostTestWeb/temperaturen.xml im Firefox eingebe wird die Temperatur XML problemlos vom Server geladen.
Irgendwo muß es da noch eine "Restrektion" geben. Wie schon erwähnt alles lokal ==>kein Problem und alles auf dem Server ==> auch kein Problem
Falls es noch Tipps gibt sind diese willkommen.
MfG
Achim
lokal.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="lokal.xsl"?>
<empty/>
lokal.xsl
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates select="document('http://localhost/TestWeb/temperaturen.xml')" mode="lokal-transform"/>
</xsl:template>
<xsl:template match="//*" mode="lokal-transform">
aha
</xsl:template>
</xsl:stylesheet>
Server temperaturen.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<test>
<ort>
<sensor>Wohnzimmer</sensor>
<temperatur>22,3 °C</temperatur>
</ort>
<ort>
<sensor>Keller</sensor>
<temperatur>10,3 °C</temperatur>
</ort>
<sensor>Speicher</sensor>
<temperatur>15,3 °C</temperatur>
<ort>
<sensor>Vorlauf</sensor>
<temperatur>67,3 °C</temperatur>
</ort>
</test>
Hallo Zusammsen,
ich habe ein kleines (?) Sicherheitsproblem im Firefox 3. Das ist auch gut so, aber in meinem Falle schlecht! Ich habe eine XML Infodatei die ich mit einem XSL Stylesheet nach HTML transformiere. Lokal und Remote ist das kein Problem. Wenn ich aber die XML Datei vom Server lade und auf eine lokale XSL Datei zugreifen möchte zB.:..."file:///C:/temp/temperatur.xsl".... bringt mir (zurecht!) die Firefox Fehlerkonsole eine Sicherheitsmeldung, dass man auf den lokalen File nicht zugreifen darf.
Ist das grundsätzlich nicht möglich?Bin für jegliche Tipps (Links) dankbar. (siehe Einganspost)
Das Problem ist nach wie vor offen. Es gibt bei Google sehr viele Referenzen auf etwa die Geiche Fragestellung, aber leider hab ich noch keine Lösung gefunden.
Anscheinend kann man nicht auf verschieden Domains zugreifen.
Problem: XML Datei von einem Remoteserver laden und mit einem lokalen XSL nach HTML transformieren.
Oder mehrere XML von verschieden Domains laden?
Wer hat einen Lösunsansatz bzw. weiß welche (Sicherheits)-einstellungen bei Firefox 3 gemacht werden müssen, dass das geht?
MfG
Achim