Jense: http und Ajax mit https - geht das?

Hallo Spezies,
ich möchte eine Seite mit http aufrufen und Inhalte mit Ajax dynamisch ändern. Die dynamischen Änderungen sollen grösstenteils über http aber eben teilweise auch über https laufen. Hintergrund: Es gibt massig Daten und manche sind eher sensibel. Alles über https möchte ich aus Performancegründen vermeiden.
Mit dem IE habe ich einfach
http.open("POST", "https://localhost/testPHP.php", true) genommen,
beim FF bekomme ich dann allerdings diese Fehlermeldung:

uncaught exception: Die Erlaubnis für den Aufruf der Methode XMLHttpRequest.open wurde verweigert

Deshalb grundsätzlich die Frage kann man http und https 'dynamisch mischen'? Wenn ja, was mache ich falsch bzgl. FF? Wenn nein, wie sieht eine Alternativlösung aus (evtl. irgendwas mit frames etc. ?).

Bin wie immer dankbar für jeden Tip

Jense

  1. Hi,

    Deshalb grundsätzlich die Frage kann man http und https 'dynamisch mischen'?

    nein. Bei AJAX greift die Same Origin Policy, d.h. die Host/Port/Protokoll-Kombination beider betroffenen URIs muss identisch sein.

    Wenn nein, wie sieht eine Alternativlösung aus

    Lass bereits die Seite per HTTPS aufrufen.

    (evtl. irgendwas mit frames etc. ?).

    Von den massiven zusätzlichen Problemen, die Frames erschaffen, verlagern sie das Problem lediglich auf die Kommunikation zwischen Fenstern.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo Cheatah,

      Von den massiven zusätzlichen Problemen, die Frames erschaffen, verlagern sie das Problem lediglich auf die Kommunikation zwischen Fenstern.

      heisst das es wäre also keine gute Idee?

      Ich schildere meine konkrete Problemstellung nochmal anders in der Hoffnung das es doch einen effizienten Weg gibt. Nach einem login wird 'die Seite' und mit Ihr ein paar Daten geladen die verschlüsselt sein sollten. Also lade ich die Seite mit https...
      Dann werden aufgrund von Eingaben potentiell eine Menge Daten per Ajax nachgeladen. Die brauchen (und sollten wegen evtl. Performanceproplemen) nicht verschlüsselt sein. Beim Ausloggen werden wieder Daten übermittelt die verschlüsselt sein sollen. Die Seite selber bleibt die ganze Zeit bestehen (ist nur eine). Die Aufgabenstellung ist doch gar nicht so ausgefallen - oder täusch ich mich da?

      Jense

      1. Hi,

        Von den massiven zusätzlichen Problemen, die Frames erschaffen, verlagern sie das Problem lediglich auf die Kommunikation zwischen Fenstern.
        heisst das es wäre also keine gute Idee?

        überhaupt nicht. Darüber hinaus würde es Dein Problem nicht lösen ;-)

        Ich schildere meine konkrete Problemstellung nochmal anders in der Hoffnung das es doch einen effizienten Weg gibt. Nach einem login wird 'die Seite' und mit Ihr ein paar Daten geladen die verschlüsselt sein sollten. Also lade ich die Seite mit https...

        Bei einem Login sollte immer schon die Seite, auf der man seine Daten eingibt, per HTTPS ausgeliefert werden.

        Dann werden aufgrund von Eingaben potentiell eine Menge Daten per Ajax nachgeladen. Die brauchen (und sollten wegen evtl. Performanceproplemen) nicht verschlüsselt sein.

        Die Daten haben also nichts mit dem eingeloggten User zu tun? Warum verwendest Du hier eigentlich AJAX?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo Jense,

    Hintergrund: Es gibt massig Daten und manche sind eher sensibel.

    Dann ist HTTP und HTTPS mischen eine GAAAANZ schlechte Idee - denn dann fehlen Dir effektiv doch die Vorteile von https. Entweder HTTP (wenn die Daten nicht so sensibel sind) oder HTTPS. Alles andere ist Käse und führt nur zu einem falschen Sinn von Sicherheit, die bei so etwas absolut nicht gegeben ist (es gibt etliche Attacken gegen Seiten mit "gemischten Inhalten", die den Schutz von HTTPS effektiv aushebeln).

    Alles über https möchte ich aus Performancegründen vermeiden.

    Hast Du dafür konkrete Zahlen? Oder ist das nur ein Bauchgefühl?

    Hier bei SELFHTML verwenden wir HTTPS für alle internen Bereiche. Genauso verwenden wir SSL/TLS für das komplette Mailsystem, Daten werden entweder per SSH hochgeladen oder über HTTPS in ein Subversion-Repository kopiert. Sogar die internen (!) LDAP-Server und -Anwendungen kommunizieren alle mit SSL/TLS. Im Prinzip wird hier alles wichtige verschlüsselt.

    Deshalb grundsätzlich die Frage kann man http und https 'dynamisch mischen'?

    Nein, kann man nicht so ohne weiteres, die "Same Origin Policy" bezieht sich auf Hostname *UND* Protokoll (und Port). Wenn der IE das zulässt, dann würde ich das als Sicherheitslücke ansehen. Kann natürlich sein, dass er das nur bei 'localhost' erlaubt und bei entfernten Rechnern nicht, dann wäre das natürlich harmlos.

    Wenn nein, wie sieht eine Alternativlösung aus (evtl. irgendwas mit frames etc. ?).

    Du kannst mit Frames zwar Inhalte gemischt anzeigen lassen (d.h. einen (I)Frame mit einer HTTP-Seite in einer HTTPS-Seite darstellen oder umgekehrt) - allerdings kannst Du zwischen diesen Seiten keinerlei Daten per JavaScript austauschen (Sicherheitslücken und privilegierte Seiten (d.h. die im Browser als "besonders vertrauenswürdig" eingestellt sind) mal ausgenommen).

    Viele Grüße,
    Christian

    1. Hallo Christian

      Alles über https möchte ich aus Performancegründen vermeiden.

      Hast Du dafür konkrete Zahlen? Oder ist das nur ein Bauchgefühl?

      Nur ein Bauchgefühl und ein paar idealistische Annahmen...

      Deshalb grundsätzlich die Frage kann man http und https 'dynamisch mischen'?

      Nein, kann man nicht so ohne weiteres, die "Same Origin Policy" bezieht sich auf Hostname *UND* Protokoll (und Port). Wenn der IE das zulässt, dann würde ich das als Sicherheitslücke ansehen. Kann natürlich sein, dass er das nur bei 'localhost' erlaubt und bei entfernten Rechnern nicht, dann wäre das natürlich harmlos.

      Das Projekt läuft z.Z. nur auf 'localhost'...

      Sehr, sehr hilfreiche Antwort! Danke Dir! Dann werde ich wohl oder übel auf https umsteigen und hoffen, dass im Fall der Fälle der Server nicht allzuschnell in die Knie geht.

      Gruss Jense