Frank: Passwort in URL vor User verbergen II

Hier ein zweiter Anlauf, da ich das Problem wohl nich exakt geschildert hatte:

Ein Praxis-Programm ruft per URL von einem Bilder-Server die Röntgenbilder eines Patienten ab und zeigt sie im Browser des Rechners. Die URL hat die Form: http://Server?user=geheim$passwort=noch%20geheimer?patient='Meier,Hans'

Jetzt sollen die Arzthelferinnen über das Praxis-Programm die Bilder in einem Browser aufrufen. Sie sollen aber den Server-User und das Passwort in dem sich öffnenden Browserfenster nicht direkt lesen können.

Die URL des Servers ist im Programm-Setup eingegeben incl. User und Passwort, der Patientenname wird vom Programm beim Aufruf dahintergeschrieben.

Wie verhindere ich die Anzeige der URL im Browser? Das muß nicht McGyver-sicher sein. Nur der normale DAU sollte nicht mit der Nase auf diese Angaben gestoßen werden.

Welche Lösungen gibt es? Javascript in der einen Aufrufzeile? Oder als encodeter Aufrufstring? Oder ein Frame-Konstrukt? Habt Ihr Erfahrungen? Was taugt?

  1. Hallo!
    Mir fällt spontan eine Weiterleitung oder ein Fenster ohne Adresszeile ein. Hilft Dir das?
    Gruß, Matze

    1. Irgendetwas in dieser Richtung wäre die Lösung.
      Aber wie?

      Fenster ohne Adresszeile ist genial. Aber das kriege ich nicht über eine Änderung in Setup eingegebenen Aufrufzeile des Programms hin oder???

      Kiosk-Mode des IE ist leider nicht gut, da nicht DAU-sicher --> es fehlt dann der Schließen-Button.

      Weiterleitung ist ok; aber wie?

      Mein Versuch war folgender:
      <script type="text/JavaScript">
      <!--
      function MM_openBrWindow(theURL,winName,features) { //v2.0
        window.open(theURL,winName,features);
      }
      function schliessen() { self.close(); }
      function autoschliessen() { setTimeout("self.close();",3000); }

      //-->
      </script>
      </head>
      <body onblur="schliessen()" onload="autoschliessen(); MM_openBrWindow('fenster2.htm?user=geheim...','','scrollbars=yes,resizable=yes')">
      </body>
      </html>

      Das script ruft ein zweites Fenster ohne Adresszeile auf. Klappt super, nur fragt der IE, ob er das erste Fenster schließen soll. Klicke ich dann auf "nein", habe ich das passwort in der ersten Adresszeile präsentiert.

      1. Hallo!

        Irgendetwas in dieser Richtung wäre die Lösung.
        Aber wie?

        Mit PHP würde ich so tun:

        <?PHP
        header("Location: DEINE DATEI");
        ?>

        Als aller erstes in der Datei.

        Fenster ohne Adresszeile ist genial. Aber das kriege ich nicht über eine Änderung in Setup eingegebenen Aufrufzeile des Programms hin oder???

        Wenn du Fenster ohne schließen e.t.c. hin kriegst, warum dann keine nur ohne Adresszeile? Mit Javascript wär das einfach zu realisieren.
        Ich kenn dein Programm nicht!

        Gruß, Matze

        1. header() klingt gut. Ich experimentiere gerade.

          Problem: die URL enthält " und '
          Ich bastele jetzt mit header( www.server.de? /"user/" und /'name/' )

          1. Hallo!

            Problem: die URL enthält " und '
            Ich bastele jetzt mit header( www.server.de? /"user/" und /'name/' )

            Versuch header('dein kram');

            Hab jetzt aber nicht probiert.

            Ich würde aber auch gern wissen wieso du den Sicherheitsaspekt außer acht lässt?!

            Gruß, Matze

          2. Hallo nochmal!

            Problem: die URL enthält " und '

            Ich entschuldige mich für den letzten Beitrag!
            Nur halb gelesen.

            Aber das mit der Sicherheit interessiert mich weiterhin.

            Gruß, Matze

        2. echo $begrüßung;

          Mit PHP würde ich so tun:
          header("Location: DEINE DATEI");

          An wen wird denn der Location-Header gesendet? An den Client.
          Was macht der damit? Er ruft die angegebene Ressource auf und zeigt sie in der Adresszeile an.
          War das nicht das, was verhindert werden sollte? Dieser Vorschlag ist also untauglich. (Mal ganz abgesehen davon, dass für einen Location-Header eine vollständige URL, nicht nur ein relativer Verweis definiert ist.)

          echo "$verabschiedung $name";

          1. Hallo!

            An wen wird denn der Location-Header gesendet? An den Client.
            Was macht der damit? Er ruft die angegebene Ressource auf und zeigt sie in der Adresszeile an.
            War das nicht das, was verhindert werden sollte? Dieser Vorschlag ist also untauglich.

            Ist er nicht. Die aufgerufene Seite interessiert ja auch keinen.
            Wenn ich mittels eines Formulars Benutzer:Passwort@Link übergebe,
            komme ich ohne nochmalige Eingabe der Daten in den Passwortgeschützten Bereich.
            In der verlinkten Datei im Passwortgeschützten Bereich leite ich auf eine andere weiter und habe somit deren Namen oben stehen und nicht mehr User:Passwort@Link. Klar oder?

            Gruß, Matze

            1. echo $begrüßung;

              An wen wird denn der Location-Header gesendet? An den Client.
              Was macht der damit? Er ruft die angegebene Ressource auf und zeigt sie in der Adresszeile an.
              War das nicht das, was verhindert werden sollte? Dieser Vorschlag ist also untauglich.

              Ist er nicht. Die aufgerufene Seite interessiert ja auch keinen.

              Ach, warum wird sie denn dann aufgerufen?

              Wenn ich mittels eines Formulars Benutzer:Passwort@Link übergebe,
              komme ich ohne nochmalige Eingabe der Daten in den Passwortgeschützten Bereich.
              In der verlinkten Datei im Passwortgeschützten Bereich leite ich auf eine andere weiter und habe somit deren Namen oben stehen und nicht mehr User:Passwort@Link. Klar oder?

              Und dann soll der Server irgendwohin weiterleiten, wo kein Nutzername und Passwort mehr übergeben wird? Warum soll man dann nicht gleich auf diesen Bereich linken können? Deine Ausführungen gehen, wie sich eben gerade herausstellt, von einer HTTP-Authentifikation aus, bei der Username und Passwort nach einmaligem Eingeben bei jedem weiteren Request automatisch vom Browser an den Server gesendet werden. In dem Fall wäre dein Vorschlag noch halbwegs nutzbar. Der OP schildert das Problem aber so, dass die Angaben per Querystring-Parameter übergeben werden.

              Außerdem sagte er, dass die Anwendung auf dem Server nicht verändert werden kann, also die Übergabe als Querystring nicht durch eine andere Lösung ersetzt werden kann. Denn dann hätte man die ganze Geschichte gleich "richtig" schreiben können.

              echo "$verabschiedung $name";

              1. Hallo!

                Ist er nicht. Die aufgerufene Seite interessiert ja auch keinen.

                Ach, warum wird sie denn dann aufgerufen?

                Damit User+Passwort nicht mehr in der Adresszeile stehen.
                Darum ging es nur. Es wäre auch die 2. Seite die eigentlich gewünschte.
                Die erste wird nur zur Passwortübermittlung aufgerufen und dann weitergeleitet.

                Deine Ausführungen gehen, wie sich eben gerade herausstellt, von einer HTTP-Authentifikation aus, bei der Username und Passwort nach einmaligem Eingeben bei jedem weiteren Request automatisch vom Browser an den Server gesendet werden.

                Richtig!

                Außerdem sagte er...

                Ausserdem ist das ganze Konzept, mit verlaub, fürn Ar***.
                Ich habe aber schon mit anderer Praxissoftware und der APO-Bank ähnlich erschreckende Erfahrungen gemacht.
                Anscheinend macht sich beim Thema Datenschutz und Sicherheit kein Arzt oder Mitarbeiter wirklich Gedanken.

                Gruß, Matze

      2. Hallo.

        Kiosk-Mode des IE ist leider nicht gut, da nicht DAU-sicher --> es fehlt dann der Schließen-Button.

        Den erhältst du mittels Javascript in fast beliebiger Forn schneller als eine auch nur halbwegs sichere andere Lösung für dein Problem.
        MfG, at

  2. Hi Frank,

    das ganze Konstrukt ist für Patientendaten zu unsicher, sorry, auch wenn Du die URL durch einen Frame versteckst.

    Viele Grüße
    Mathias Bigge

    1. Unsicher, aber versteckt wäre völlig ok.

      Nur total offensichtlich darf es nicht sichtbar sein.

      1. Hi Frank,
        wenn es nicht sicher sein soll. Warum dann überhaupt die Bemühungen?
        Mach es gleich für alle zugänglich.

        Legst du deinen Schlüssel unter die Fußmatte? Mach es doch. Du wirst ihn ganz sicher nicht mehr verliehren und mit etwas Glück wird nie einer unter die Fußmatte schauen. Wenn doch, ... :-) Have a lot of Fun!
        Also überdenke dein Vorhaben und verwerfe es!

        http://de.wikipedia.org/wiki/Kerckhoffs-Prinzip

        MfG
        Otto

  3. Hallo Frank,

    Welche Lösungen gibt es? Habt Ihr Erfahrungen? Was taugt?

    Erfahrung mit solch haarsträubend unsicheren Konzepten habe ich nicht und "es taugt" auch alles nichts, aber wenn schon dann versuch doch mal dein Praxis Programm dazu zu bringen den Browsen den HTTP Request per POST anstatt per GET abzusetzen. Dann sieht man die Parameter nicht in der URL.

    Cruz