Variablenübergabe mit Session an SSL

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Variablenübergabe mit Session an SSL

    Hallo,
    folgendes Problem:
    Nach einem Login starte ich eine Session mit
    PHP-Code:
    session_start (); 
    $_SESSION["ses_id"]=md5(uniqid(rand())); 
    In allen Dateien die aufgerufen werden, frage ich mit
    PHP-Code:
    if (!isset ($_SESSION["ses_id"])) 
    {
    header ("Location: fehler.php"); 

    nach ob die Session och aktiv ist
    Irgendwann später möchte ich Daten auf den Server übertragen. Die Datenübertragung soll sicher sein, deswegen würde ich dann gerne auf SSL wechseln und die Datei https://www.domain.de/schreiben.php aufrufen.

    Im SSL-Berich ist jetzt aber die Session nicht mehr aktiv. Wie schaffe ich es, dass auch auf https://www.domain.de/schreiben.php die Sitzung aktiv bleibt und ich so die Datenübertragung verschlüsselt gestalten kann?
    Ich möchte möglichst nur die schreiben.php auf SSL laufen lassen und sonst alles "normal" über http.

    Weiß da jemand eine Lösung? Besten Dank im Voraus!

  • #2
    Im SSL-Berich ist jetzt aber die Session nicht mehr aktiv. Wie schaffe ich es, dass auch auf https://www.domain.de/schreiben.php die Sitzung aktiv bleibt und ich so die Datenübertragung verschlüsselt gestalten kann?
    Bist du sicher, dass die Session ID im URL oder als Cookie an den Client geschickt wird ? Und wieso erstellst du eine eigene "SessionID" als Session Var ? Das macht php bereits für dich
    PHP-Code:
    session_start();
    echo 
    SID
    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      um von php aus mit ssl servern sprechen zu können brauchste ja
      sowas wie curl
      dh du musst über curl ne session machen aber für mich is das alles nur graue theorie google hilft sicher

      Kommentar


      • #4
        @topicstarter
        Wie übergibst du die Session ID von Seite zu Seite ? Schreibst du diese z.B. mit echo strip_tags(SID) hinten an die URL oder lässt du das von php erledigen ? Wenn du es von php erledigen lässt könnte ich mir vorstellen dass php einen https Host als andere Domain ansieht und als Sicherheitseinstellung die Session ID nicht überträgt. Händisch kriegst du die Session ID aber auf jeden Fall durch.

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Händisch heißt in diesem Fall, dass ich die Sessionvariablen wie u.a. die $_SESSION["ses_id"] (und alle anderen relevanten Variablen) per POST weitergeben muß? Dass heißt, die https-Seiten werden behandelt wie eine komplett andere Domain?

          Kommentar


          • #6
            Händisch heißt in diesem Fall, dass ich die Sessionvariablen wie u.a. die $_SESSION["ses_id"] (und alle anderen relevanten Variablen) per POST weitergeben muß?
            Wo hast du denn das her ? Hat du mal das Manual zum Thema Session gelesen ?
            Es ist ja gerade der Witz an Sessions, dass du die einzelnen Session Vars eben nicht übertragen musst. Diese bleiben auf dem Server und werden einer Session ID zugeordnet. Und nur diese Session ID muss übertragen werden, damit der Server weiss auf welches Set an Session Vars er zugreifen muss.
            Die mal so als kleines Bsp
            PHP-Code:
            //index.php
            <?php
            session_start
            (); // Session starten
            $_SESSION['login'] = true//Session Var login mit Boolean belegen

            //Link zu session.php
            /*in der Konstanten SID ist bei deaktivierten Cookies die Session Id
             in der Form [b]session_name=session_id[/b] gespeichert. Ein strip_tag() 
            entfernt etwaige Sicherheitslücken*/
            ?>
            <a href="session.php?<?php echo strip_tags(SID);?>">

            //session.php
            <?php
            session_start
            (); /*eine neue Session wird nur erstellt wenn keine 
            bekannte via Cookie oder URL übertragen wurde. Ansonsten 
            werden die entsprechenden Session Vars geladen*/

            var_dump($_SESSION['login']);
            ?>
            Du siehst also dass nur die Session ID übertragen wird.
            Dass heißt, die https-Seiten werden behandelt wie eine komplett andere Domain?
            Wenn du die Session ID nicht händisch übergibst, macht das PHP normalerweise für dich. D.h. PHP erweitert alle durch url_rewriter_tag erlaubten Tags, die innerhalb deiner Domain sind, automatisch um die Session ID. Zu einer Domain gehört eben auch das verwendete Protokoll und http !== https. Darum wird php wohl eine andere Domain annehmen und die Session ID nicht übertragen.

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Wo hast du denn das her ? Hat du mal das Manual zum Thema Session gelesen ?
              Es ist ja gerade der Witz an Sessions, dass du die einzelnen Session Vars eben nicht übertragen musst. Diese bleiben auf dem Server und werden einer Session ID zugeordnet. Und nur diese Session ID muss übertragen werden, damit der Server weiss auf welches Set an Session Vars er zugreifen muss.
              Das ist schon klar. Die Frage ist halt wie ich die Session auf "https" bekomme.
              Darum wird php wohl eine andere Domain annehmen und die Session ID nicht übertragen.
              Das ist genau das Problem.

              @BugBite
              Das mit curl hört sich interessant an, muß ich mir mal genauer ansehen.

              Kommentar


              • #8
                Das ist genau das Problem.
                Dann löse es doch einfach händisch
                PHP-Code:
                <a href="https://meine_domain.de/secure_login.php?<?php echo strip_tags(SID);?>">
                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar

                Lädt...
                X