Sicherheitsfehler iframe Javascript

  • Guten Tag,

    Aus einem Flash-Film heraus wird ein Javascript angesprochen, welches 2 iframes auf der entsprechenden Seite neu laden soll. Dieses funktioniert im IE sowie in Firefox 0.8. Im Firefox 1.0.7 gibt es folgende Fehlermeldung: "Sicherheitsfehler: Inhalt auf http://serveradresse/ordner/Webshop/cdinhalt.php?album_id=2 darf resource://gre/res/cdinhalt2.php?album_id=19 nicht laden oder verlinken."

    Bei der Recherche in diesem Forum gibt es ähnliche Threads, die auf Sicherheitseinschränkungen beim Verlinken auf lokale Dateien Bezug nehmen. Wenn ich es richtig verstehe, wird in meinem Fall doch eine Verlinkung auf eine Serverdatei durchgeführt. Wo liegt denn hier das Problem und wie löse ich es?
    Vielen Dank
    Matthias

  • Grundsätzlich darf ein javascript nur auf seiten zugreifen auf der es selbst liegt (domainabhängig).

    Unter about:config gibt es einen eintrag genannt security.checkloaduri ... wenn man den auf false setzt, sollte man den schutz aushebeln dürfen. ist aber browserbezogen. andere user müssten das ebenfalls machen, wenn die die seite nutzen wollen. auch stellt es eine nicht nur theoretische sicherheitslücke da, da sie eingeschränkt zugriff auf festplatten-inhalte gewährt.

  • Naja. Das script behauptet ja, du wolltest von resource://gre/res/... laden, was eine Firefox-Interne URL ist. Ich weiß nicht, wo genau der Fehler liegt, aber Firefox denkt irgendwie, du wolltest eine lokale Firefox-interne Systemdatei einbinden.

    Ein Link wäre nicht schlecht.

  • Zur Verdeutlichung hier ein Auszug des Quelltextes:

    <script language="JavaScript">
    <!--
    var isInternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
    function bla_DoFSCommand(command, args) {
    if (command == "messagebox") {
    parent.frames[0].location.href="cdinhalt2.php?album_id="+args;
    parent.frames[1].location.href="kaufen.php?album_id="+args;
    }
    }
    // Hook für Internet Explorer.
    if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1) {
    document.write('<script language=\"VBScript\"\>\n');
    document.write('On Error Resume Next\n');
    document.write('Sub bla_FSCommand(ByVal command, ByVal args)\n');
    document.write(' Call bla_DoFSCommand(command, args)\n');
    document.write('End Sub\n');
    document.write('</script\>\n');
    }
    //-->
    </script>
    </HEAD>
    <body>
    <div id = "seite">
    <div id = "cover">
    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/…version=7,0,0,0" width="400" height="500" id="bla" align="middle">
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="movie" value="bla.swf?album_id=<? echo $_GET['album_id']; ?>" />
    <param name="quality" value="best" />
    <param name="bgcolor" value="#ffffff" />
    <embed src="bla.swf?album_id=<? echo $_GET['album_id']; ?>" quality="high" bgcolor="#ffffff" width="400" height="500" name="bla" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
    </object>
    </div>
    <div id = "cd_inhalt">
    <iframe style = "border: 0px solid white" src="cdinhalt2.php?album_id=<? echo $_SESSION['album_id']; ?>" width = "488" height= "550" frameborder="0" scrolling = "no"></iframe>
    </div>
    <div id = "footer">
    <iframe style = "border:0px solid red" src="kaufen.php?album_id=<? echo $_SESSION['album_id']; ?>" width="888" height="60" marginheight = "0" marginwidth= "0" frameborder = "0" scrolling = "no"></iframe>
    </div>
    </div>

  • Ne. Von Flash und dem jeweiligen zusammenhang hab ich keine Ahnung. Da alle Pfade relative sind, sollte es eigendlich problemlos gehen, aber ohne eine echte testumgebung, wo man mal was ausprobieren kann, kann ich nichts dazu sagen. Und die zu erstellen sollte wohl ein wenig aufwendig sein. das einzigste was mir einfallen würde, wäre mal alles mit absoluten adressen auszurüsten um zu schauen, was dann passiert...

  • So, ich habe mal eine Testumgebung gebastelt:
    http://www.hartighof.de/tester/cdinhalt.php
    drückt man auf einen Button, soll sein Label als Zahl fünfmal im iframe angezeigt werden. Im IE und Firefox 0.8 funktioniert es wie gesagt.

    anbei die Quelltetxte beider Dateien:
    cdinhalt.php:

    cdinhalt2.php:

    [/code]

  • Code
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"


    da fehlt noch die schliessende spitze klammer (>)
    Ansonsten bekomme ich einen anderen Fehler als Du.... (getestet unter Fx1.5RC2DE)

    Zitat

    Fehler: plugin.SetWindow is not a function
    Quelldatei: javascript: function jsScriptObject(obj) { this.wrappedJSObject = obj; } jsScriptObject.prototype = { evaluate : function(expression) { return new jsScriptObject(eval(expression)); } }; var plugin = document.embeds['bla']; plugin.SetWindow(new jsScriptObject(window),510065696);
    Zeile: 1


    Gibts irgendwo eine Browserweiche? Oder sprichst du vielleicht irgendwo was "falsch" an?

    Unter Fx0.8 gehts, kann ich so bestätigen.

  • So, diverse Recherchen später, denke ich, daß Problem umgehen zu können.
    Die Ursache scheint in der Kommunikation zwischen Flash und Javascript und einigen Firefoxversionen zu bestehen, wenn man die Variante fscommand verwendet. Wieso auch immer. Siehe beispielhaft hier:
    http://www.flashforum.de/forum/archive/…p/t-169575.html
    http://forum.flashhilfe.de/forumpsprachen…107_153107.html
    http://www.flashforum.de/forum/archive/…p/t-133988.html

    Hier:
    http://aktuell.de.selfhtml.org/artikel/progra…htm#allgemeines
    wird dazu eine Alternative erläutert, getUrl.
    Habe das in der Testumgebung mal im dritten Button benutzt und läuft.
    Vielen Dank an JonHa und bugcatcher für Eure Bemühungen und Hilfe.
    Matthias