Tom: JavaScript: Sicherheitsfehler

Hello,

ich habe da dieses einfache Beispiel für "Multiupload"

http://selfhtml.bitworks.de/multiupload.html

Es können mehrere Bilder hochgeladen werden und man bekommt eine einfache Vorschau.

Im IE funktioniert das auch. Leider verursacht der Firefox 2.0 eine Fehlermeldung in der JavaScript-Konsole

Sicherheitsfehler: Inhalt auf http://selfhtml.bitworks.de/multiupload.html darf file:///S:/GRAFIK/Werbung/MAUS/FESTE/Out_of_the_box.cdr nicht laden oder verlinken.

Wie krieg ich das weg?

Schließlich ist es der Nutzer selber, welcher durch Klicken des Durchsuchen-Buttons das Bild auswählt. Es wird ja auch hochgeladen. Nur angezeigt wird es nicht.

Harzliche Grüße aus dem
verschneiten Sankt Andreasberg
und Frohe Weihnachtszeit

Tom

--
Nur selber lernen macht schlau

  1. Hallo,

    du solltest dir mal ausgeben lassen, was hier drin steht: ~~~javascript

    document.getElementById(imgNr).value

    document.getElementById('img1').src='file://' + document.getElementById(imgNr).value;

      
    das ist bei jedem Browser anders.  
      
    übrigens Reihenfolge beachten:  
    <table>  
    <thead>  
    <tfoot>  
    <tbody>  
    ....  
      
    Gruß plan\_B
    
    -- 
         \*®\*´¯`·.¸¸.·
    
    1. Hello,

      du solltest dir mal ausgeben lassen, was hier drin steht: [code]
      document.getElementById(imgNr).value

      document.getElementById('img1').src='file://' + document.getElementById(imgNr).value;

      Da steht genau das drin, was soll.

      Das muss an der Policy liegen.
      Hab ich wirklich keine Idee, wie ich das Problemchen beseitigen kann...

      Harzliche Grüße aus dem
      verschneiten Sankt Andreasberg
      und Frohe Weihnachtszeit

      Tom

      --
      Nur selber lernen macht schlau

      1. Hallo,

        Da steht genau das drin, was soll.

        ich bin mit Opera unterwegs

        Das muss an der Policy liegen.
        Hab ich wirklich keine Idee, wie ich das Problemchen beseitigen kann...

        es wird (darf) nicht funktionieren.

        Gruß plan_B

        --
             *®*´¯`·.¸¸.·
  2. Hallo,

    Im IE funktioniert das auch. Leider verursacht der Firefox 2.0 eine Fehlermeldung in der JavaScript-Konsole

    Sicherheitsfehler: Inhalt auf http://selfhtml.bitworks.de/multiupload.html darf file:///S:/GRAFIK/Werbung/MAUS/FESTE/Out_of_the_box.cdr nicht laden oder verlinken.

    hatte erst gedacht, es wäre ein Protokollfehler.

    Aber richtige Browser dürfen das nicht zulassen. Auf die Art könntest du ja jede Datei meiner Platte in deine Seite einbauen und ausspähen.

    Gruß plan_B

    --
         *®*´¯`·.¸¸.·
    1. Hello,

      Aber richtige Browser dürfen das nicht zulassen. Auf die Art könntest du ja jede Datei meiner Platte in deine Seite einbauen und ausspähen.

      Wie sollte ich das machen?

      In das File-Feld nimmt der Firefox die ausgewählten Dateien einwandfrei auf.
      Dem img-Element kann ich sie dann nicht zuweisen?
      Das Element verlässt doch nicht den Host, weil Du es im Browser anzeigen lässt.
      Um es zu stehlen, müsste ich es in einen Post einbauen können.
      Ist das denn möglich?

      Außerdem steht der Pfad schon ausgewählt im Filefeld

      Harzliche Grüße aus dem
      verschneiten Sankt Andreasberg
      und Frohe Weihnachtszeit

      Tom

      --
      Nur selber lernen macht schlau

      1. Hallo

        Aber richtige Browser dürfen das nicht zulassen. Auf die Art könntest du ja jede Datei meiner Platte in deine Seite einbauen und ausspähen.

        Wie sollte ich das machen?

        In das File-Feld nimmt der Firefox die ausgewählten Dateien einwandfrei auf.
        Dem img-Element kann ich sie dann nicht zuweisen?
        Das Element verlässt doch nicht den Host, weil Du es im Browser anzeigen lässt.
        Um es zu stehlen, müsste ich es in einen Post einbauen können.

        Darf JavaScript auf Dateien des lokalen Dateisystems lesend zugreifen (um sie z.B. im Browser darzustellen)?

        Tschö, Auge

        --
        Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
        (Victor Hugo)
        Veranstaltungsdatenbank Vdb 0.2
        1. Hello,

          Hallo

          Aber richtige Browser dürfen das nicht zulassen. Auf die Art könntest du ja jede Datei meiner Platte in deine Seite einbauen und ausspähen.

          Wie sollte ich das machen?

          In das File-Feld nimmt der Firefox die ausgewählten Dateien einwandfrei auf.
          Dem img-Element kann ich sie dann nicht zuweisen?
          Das Element verlässt doch nicht den Host, weil Du es im Browser anzeigen lässt.
          Um es zu stehlen, müsste ich es in einen Post einbauen können.

          Darf JavaScript auf Dateien des lokalen Dateisystems lesend zugreifen (um sie z.B. im Browser darzustellen)?

          Das ist doch hier gar nicht die Frage.

          Die Frage muss lauten:

          Darf JavaScript sich aus seinem eigenen Cache etwas herausholen, dass der User des Browsers dort vorher durch bewusste Handlung (Auswahldialog) hineingetan hat?

          Und die beantworte ich eindeutig mit "Ja".

          Es ist also nur reine Schikane des Firefox, dass es das nicht unterstützt.

          Harzliche Grüße aus dem
          verschneiten Sankt Andreasberg
          und Frohe Weihnachtszeit

          Tom

          --
          Nur selber lernen macht schlau

          1. Hallo

            Aber richtige Browser dürfen das nicht zulassen. Auf die Art könntest du ja jede Datei meiner Platte in deine Seite einbauen und ausspähen.

            Wie sollte ich das machen?

            In das File-Feld nimmt der Firefox die ausgewählten Dateien einwandfrei auf.
            Dem img-Element kann ich sie dann nicht zuweisen?
            Das Element verlässt doch nicht den Host, weil Du es im Browser anzeigen lässt.
            Um es zu stehlen, müsste ich es in einen Post einbauen können.

            Darf JavaScript auf Dateien des lokalen Dateisystems lesend zugreifen (um sie z.B. im Browser darzustellen)?

            Das ist doch hier gar nicht die Frage.

            Sicher?

            Die Frage muss lauten:

            Darf JavaScript sich aus seinem eigenen Cache etwas herausholen, dass der User des Browsers dort vorher durch bewusste Handlung (Auswahldialog) hineingetan hat?

            Nur mal zur Klarstellung: Wenn ich innnerhalb eines HTML-Formulars eine Datei zum hochladen auf den Server bestimme (das ist ja die eigentliche Funktion des Dateiuploadfeldes), steht der _Inhalt_ der Datei und nicht nur deren _Pfad_ JavaScript zur Verfügung?

            Sprich: Das Uploadfeld nimmt im Moment der Auswahl einer bestimmten Datei nicht deren lokalen Pfad sondern ihren Inhalt selbst auf? Oder wird das nicht doch im Moment des Absendens des Formulars vom Browser geregelt und zuvor findet sich nur der Pfad der Datei im Formular?

            Tschö, Auge

            --
            Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
            (Victor Hugo)
            Veranstaltungsdatenbank Vdb 0.2
            1. Hello,

              Nur mal zur Klarstellung: Wenn ich innnerhalb eines HTML-Formulars eine Datei zum hochladen auf den Server bestimme (das ist ja die eigentliche Funktion des Dateiuploadfeldes), steht der _Inhalt_ der Datei und nicht nur deren _Pfad_ JavaScript zur Verfügung?

              Sprich: Das Uploadfeld nimmt im Moment der Auswahl einer bestimmten Datei nicht deren lokalen Pfad sondern ihren Inhalt selbst auf? Oder wird das nicht doch im Moment des Absendens des Formulars vom Browser geregelt und zuvor findet sich nur der Pfad der Datei im Formular?

              Der _Inhalt_ dieser Datei kann JavaScript doch genauso zur Verfügung stehen, wie der Inhalt des Bildes, dass der Browser anzuzeigen hat.

              Kommt man an den Inhalt von Bildern mit JavaScript heran?
              Kann man Bilder mit JavaScript manipulieren?

              Dafür kann ich beim besten Willen keine bestätigung finden.

              Größenänderungen ja, aber die werden "in Auftrag gegeben".

              Warum sollte also JavaScript dem Image-Element also nicht eine Source zuweisen dürfen, die vom Benutzer freigegeben wurde?

              Harzliche Grüße aus dem
              verschneiten Sankt Andreasberg
              und Frohe Weihnachtszeit

              Tom

              --
              Nur selber lernen macht schlau

              1. Der _Inhalt_ dieser Datei kann JavaScript doch genauso zur Verfügung stehen, wie der Inhalt des Bildes, dass der Browser anzuzeigen hat.

                Solange nichts tatsächlich hochgeladen wurde, steht nichts zur Verfügung und danach erstmal nur dem Server. Das kann man dann aber natürlich ändern.

                Kommt man an den Inhalt von Bildern mit JavaScript heran?
                Kann man Bilder mit JavaScript manipulieren?

                Nur die Größe, soweit ich weiß, Malen ist nicht erlaubt. Zumindest bei den gängigen Bildformaten.

                Größenänderungen ja, aber die werden "in Auftrag gegeben".

                Das verstehe ich nun nicht. Was meinst du damit?

                Warum sollte also JavaScript dem Image-Element also nicht eine Source zuweisen dürfen, die vom Benutzer freigegeben wurde?

                Die wird erst beim Hochladen freigegeben, dann steht sie z.B. dem Server zur Verfügung (und somit bei verfügbarem JavaScript und entsprechenden Servertechniken auch dem Client).

                --
                Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
                Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|
        2. Hi,

          Darf JavaScript auf Dateien des lokalen Dateisystems lesend zugreifen (um sie z.B. im Browser darzustellen)?

          Darf Javascript ueber Domaingrenzen hinweg auf Ressourcen zugreifen?

          Ich kann einem Image-Objekt doch nichts desto trotz eine neue Quelle zuweisen, die auserhalb der aktuellen Domain liegt. Warum sollte das bei lokal liegenden Bilddateien anders sein?

          MfG ChrisB

          1. Hello,

            Darf JavaScript auf Dateien des lokalen Dateisystems lesend zugreifen (um sie z.B. im Browser darzustellen)?

            Darf Javascript ueber Domaingrenzen hinweg auf Ressourcen zugreifen?

            Ich kann einem Image-Objekt doch nichts desto trotz eine neue Quelle zuweisen, die auserhalb der aktuellen Domain liegt. Warum sollte das bei lokal liegenden Bilddateien anders sein?

            Das dachte ich auch. Aber entweder ich hab es falsch gemacht, oder Firefox mag mich nicht.
            Wer kennnt denn eine Alternative für diese Zuweisung, die auch in Firefox funktioniert?

            Harzliche Grüße aus
            Sankt Andreasberg
            und Guten Rutsch

            Tom

            --
            Nur selber lernen macht schlau

    2. Hi,

      Sicherheitsfehler: Inhalt auf http://selfhtml.bitworks.de/multiupload.html darf file:///S:/GRAFIK/Werbung/MAUS/FESTE/Out_of_the_box.cdr nicht laden oder verlinken.

      Auf die Art könntest du ja jede Datei meiner Platte in deine Seite einbauen und ausspähen.

      Nein. Wenn im Quellcode nur z.B. ein Bild oder ein JS über file:// eingebunden wird, sehe ich darin überhaupt kein Problem - der Browser lädt diese Datei dann direkt vom lokalen Filesystem des Clients, und der Server sieht nie, dass die Datei überhaupt geladen wird, geschweige denn den Dateiinhalt.
      Die gesamte Konstellation ist eine rein clientseitige Angelegenheit. Sogar ein derart eingebundenes Javascript würde -wenn es denn funktionierte- im Kontext der Website laufen und hätte, sobald es geladen ist, keinerlei Zugriff mehr auf die lokale Maschine.

      So long,
       Martin

      --
      Realität ist eine Illusion, die durch Unterversorgung des Körpers mit Alkohol entstehen kann.
      1. Die gesamte Konstellation ist eine rein clientseitige Angelegenheit. Sogar ein derart eingebundenes Javascript würde -wenn es denn funktionierte- im Kontext der Website laufen und hätte, sobald es geladen ist, keinerlei Zugriff mehr auf die lokale Maschine.

        Es ist dann aber möglich zu überprüfen, ob die Datei nun geladen wurde oder nicht. Man kann also die Existenz von Dateien überprüfen, was sich natürlich wunderbar für Tracking (zumindest in speziellen Fällen) und zum Aufspüren installierter Software also auch von Schwachstellen eignet.

        1. Hello,

          Es ist dann aber möglich zu überprüfen, ob die Datei nun geladen wurde oder nicht. Man kann also die Existenz von Dateien überprüfen, was sich natürlich wunderbar für Tracking (zumindest in speziellen Fällen) und zum Aufspüren installierter Software also auch von Schwachstellen eignet.

          Der Pfad zur Datei soll nur dann ins Source-Attribut des Image-Elementes übernommen werden, wenn sie vorher mittels Auswahldialog ins File-Element eingetragen wurde. Das gibt erstens immer noch keinen Einblick in den Inhalt der Datei, zweitens wäre ein Request dafür notwenig [1] und drittens würde dieser mit hoher Wahrscheinlichkeit sowieso gleich durchgeführt werden durch den User.

          [1] Was allerdings AJAX in diesem Zusammenhang möglich macht, weiß ich noch nicht. Auf welche Elemente hat AJAX Zugriff und wann?

          Harzliche Grüße aus dem
          verschneiten Sankt Andreasberg
          und Frohe Weihnachtszeit

          Tom

          --
          Nur selber lernen macht schlau