Keine Session-ID für Gäste

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

  • Keine Session-ID für Gäste

    Hallo,

    ich würde gerne auf einer Seite mit Login-Möglichkeit vermeiden, dass bei Gästen eine Session gestartet wird.

    Hauptgrund dafür ist, dass ich nicht jeden Suchmaschinen-Bot einzeln ausschließen muss, damit er die Session-IDs nicht mit indexiert.

    Ein Cookie-Workaround oder ähnliches hilft mir auch nicht, da auch ohne Cookies alles weiterhin laufen soll.

    Das Login-Formular gibt es auf jeder Unterseite und gilt auch für die ganze Seite, d.h. ich kann auch nicht einfach nur einen Unterordner per robots.txt disallowen, indem sich eingeloggte Mitglieder ausschließlich bewegen.

    Ist das denn überhaupt möglich? Ich muss ja eigentlich erst eine Session starten, um überhaupt zu überprüfen, ob jemand eingeloggt ist, oder?

    Habe bereits versucht, die Session direkt wieder zu löschen, wenn keine Inhalte gefunden wurden, leider ohne Erfolg:

    PHP-Code:
    session_start();
    if(!
    count($_SESSION[]) {
    session_destroy();

    Die SID wird dabei leider schon an URLs angehangen, ohne Cookies.

  • #2
    naja es muss chon in der session ein merkmal geben, dass jemand angemeldet ist, wenn das leer false oder so ist, dann mach session_destroy()
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Original geschrieben von MelloPie
      naja es muss chon in der session ein merkmal geben, dass jemand angemeldet ist, wenn das leer false oder so ist, dann mach session_destroy()
      Ich habe doch anhand meines Code-Schnippsels verdeutlicht, dass das nichts bringen würde.

      Kommentar


      • #4
        da auch ohne Cookies alles weiterhin laufen soll.
        Für eingeloggte User, würde ich schon Cookies voraussetzen...

        PHP-Code:
        ini_set('session.use_cookies'     ,1);  
        ini_set('session.use_only_cookies',1); 
        ini_set('session.use_trans_sid'   ,0);
        session_start(); 
        if(empty(
        $_COOKIE[session_name()]))  

          
        // Suchmaschine, Cookies abgeschaltet, oder erster Zugriff 

        Zuletzt geändert von combie; 06.10.2008, 15:31.
        Wir werden alle sterben

        Kommentar


        • #5
          Original geschrieben von combie
          PHP-Code:
          ini_set('session.use_only_cookies',1); 
          wären damit nicht registrierte nutzer, die keine cookies akzeptieren, aufgeschmissen?

          Kommentar


          • #6
            Ja!
            Aber sonst müsstest du die SID in der URL weitergeben, aber das willst du ja nicht!
            Und der Wunsch ist auch berechtigt.

            Du könntest dir mit output_add_rewrite_var() was basteln.

            Aber warum haben deine Besucher Angst vor deinen Cookies?
            Wir werden alle sterben

            Kommentar


            • #7
              Original geschrieben von combie
              Aber warum haben deine Besucher Angst vor deinen Cookies?
              OffTopic:

              sie machen vielleicht dick

              Kommentar


              • #8
                OffTopic:
                Also eigentlich ist es kein Problem die session erst zu starten, wenn der User eingeloggt ist. Fürn Shop ist das zum beispiel recht nützlich, denn man will ja auch an die Leute verkaufen, die aus welchem Grund auch immer keine Cookies akzeptieren.

                Kommentar


                • #9
                  Original geschrieben von combie
                  Ja!
                  Aber sonst müsstest du die SID in der URL weitergeben, aber das willst du ja nicht!
                  Und der Wunsch ist auch berechtigt.

                  Du könntest dir mit output_add_rewrite_var() was basteln.

                  Aber warum haben deine Besucher Angst vor deinen Cookies?
                  Ich will nur diejenigen, die keine akzeptieren, einfach nicht ausschließen. Wird wohl die Minderheit sein, aber trotzdem.

                  Außerdem verwechselst Du was. Mir ist egal, ob Session-IDs angehängt werden, solange User eingeloggt sind

                  Kommentar


                  • #10
                    Original geschrieben von TobiaZ
                    OffTopic:
                    Also eigentlich ist es kein Problem die session erst zu starten, wenn der User eingeloggt ist. Fürn Shop ist das zum beispiel recht nützlich, denn man will ja auch an die Leute verkaufen, die aus welchem Grund auch immer keine Cookies akzeptieren.
                    Das ist ja genau das, was ich möchte. Nicht irgendwelche Workarounds.

                    Ich versuche das Problem nochmal etwas anders darzustellen, mit dem Falle, dass ich KEINE Session starten würde generell:

                    index.php: keine Session gestartet, User loggt sich auch nicht ein. navigiert weiter ->

                    kontakt.php: keine Session gestartet, User loggt sich ein. kontakt.php wird neugeladen, mit Parameter für Login ($act = 'login', oder was auch immer). jetzt startet kontakt.php ne session mit den userdaten. user will wieder zu index.php

                    Woher weiß index.php, dass sie diesmal ne Session starten soll, unabhängig von einem Cookie? Würde doch nur mit einem Get-Parameter gehen, oder?

                    Kommentar


                    • #11
                      Nein, ja, evtl....

                      Also:
                      Eingeloggte User mit der SID in der URL surfen zu lassen öffnet dem Sessiondiebstahl Tür und Tor.

                      z.B.
                      "Versehentliche" Weitergabe der URL in einer Email oder im Forum
                      Sie taucht in Referrern und Logs auf

                      Ich möchte nochmal ernstlich davon abraten!!


                      Wenn du aber wirklich willst, dann:

                      PHP-Code:
                      <?php
                      error_reporting
                      (E_ALL);
                      ini_set('display_errors'TRUE); // evtl. hilfreich

                      ini_set('session.use_cookies'     ,1);
                      ini_set('session.use_only_cookies',0);
                      ini_set('session.use_trans_sid'   ,0);

                      session_start();

                      switch(@
                      $_GET['action'])
                      {
                         case 
                      'login'  $_SESSION['user_id'] = 23;       break;
                         case 
                      'logout' $_SESSION            = array();  break;
                      }

                      function 
                      ist_eingeloggt()
                      {
                        return !empty(
                      $_SESSION['user_id']);
                      }


                      if(empty(
                      $_COOKIE[session_name()])  && ist_eingeloggt() )  
                        
                      output_add_rewrite_var(session_name(),session_id());


                      $self $_SERVER['SCRIPT_NAME'];
                      ?>
                      <a href="<?php echo $self?>?action=login">login</a><br>
                      <a href="<?php echo $self?>?action=logout">logout</a><br>
                      <a href="<?php echo $self?>?action=egal">reload</a><br>

                      <pre><?php var_export($_SESSION)?></pre>
                      *stark vereinfacht*
                      Zuletzt geändert von combie; 06.10.2008, 18:31.
                      Wir werden alle sterben

                      Kommentar


                      • #12
                        Also: Eingeloggte User mit der SID in der URL surfen zu lassen öffnet dem Sessiondiebstahl Tür und Tor.
                        Also, prinzipiell hast du recht, es gibt jedoch genügend Anwendungen, die es rechtfertigen, die SID in der URL zu übergeben. Genauso gibt es auch ausreichend Möglichkeiten die Weitergabe (zumindest im Referer) zu unterbinden. Und wenn die ID aktiv weitergegeben wird, hat man im Großteil der Fälle noch ausreichend Gelegenheit das zu bemerken.

                        Kommentar


                        • #13
                          Original geschrieben von combie
                          *stark vereinfacht*
                          Danke für die Mühe... Aber das ist doch wieder das, was ich eigentlich vermeiden wollte *g* Dass überhaupt eine Session gestartet wird. Ist das denn nicht möglich?

                          Laut TobiaZ ja schon, genau das laß ich bei meiner Recherche vorab auch von ihm in einem anderen Thread. @ TobiaZ: Kannst Du das vielleicht mal näher ausführen?

                          Kommentar


                          • #14
                            Dass überhaupt eine Session gestartet wird. Ist das denn nicht möglich?
                            Nein, das willst du nicht!
                            Du möchtest, dass bei Gästen und SUMAs keine SID in der URL erscheint.
                            Es kann dir doch eigentlich am Arsch vorbei gehen, ob eine Session gestartet wird!
                            Oder nicht?

                            Und dazu muß dann eine solche, oder änliche, Extrawurst gebacken werden.
                            Wir werden alle sterben

                            Kommentar


                            • #15
                              Woran erkennt man, ob eine Session gestartet wurde? Richtig an der SessionID. Folglich startet man die Session nur, wenn eine ID vorhanden ist. Fettig.

                              Vorher solltest du aber noch einige "Sicherheitsvorkehrungen" treffen, den ansonsten geht das ganze (wie Combie schon gesagt hat) schnell nach hinten los.

                              Kommentar

                              Lädt...
                              X