Session-ID in Suchmaschinen-Ergebnis verhindern?

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

  • Session-ID in Suchmaschinen-Ergebnis verhindern?

    Hallo!

    Ich habe eine Website laufen, die mit Sessions arbeitet. Die Session wird durch session_register('xyz') gestartet. Es läuft auch alles einwandfrei. Bei ersten Aufruf einer beliebigen Seite der Website wird in der Adresszeile vom Browser aber die URL plus der Variable PHPSESSID plus Wert angezeigt, obwohl die nie aktiv vom Skript an die Adresszeile übergeben wird, auf weiteren Seiten erscheint die ID dann nicht mehr, auch nicht, wenn ich die erste Seite wieder besuche.

    Die Session wird bei Aufruf jeder Seite in gleicher Weise registriert (wenn man das so sagen kann), weil die Website mit einer PHP-Layout-Vorlage arbeitet, in die der Content der einzelnen Seiten includet wird. Der Sessionaufruf wird schon in der Vorlage ausgelöst, bevor der Content geladen wird.

    Zugegebenermaßen blicke ich durch das ganze technische Verfahren der Session-Abwicklung nicht ganz durch, mit Cookies und so, daher hat mir die PHP-Referenz auch nicht weitergeholfen. Alles etwas zu kryptisch für mich. Mittlerweile musste ich nun auch feststellen, dass sogar in Suchmaschinen Seiten dieser Website mit der Session-ID als Suchergebnis angezeigt werden. Ich weiß zwar nicht, ob das wirklich ein Sicherheitsrisiko darstellt, aber ich finde das sehr merkwürdig und würde das gerne abstellen, habe aber keine Ahnung wie. Hab das bei Suchmaschinenergebnissen auch noch nie gesehen. Irgendwas muss ich da falsch gemacht haben. Kann mir da jemand weiterhelfen???

    Hier kann man's testen: http://www.gauranga.de/problem/
    http://www.zentralplan.de/

  • #2
    Einstellung verändern:
    session.use_only_cookies = 1
    Nur kann dann jemand der Cookies abgeschaltet hat, nicht mehr auf deine Website ... was mich aber spontan nicht daran hindern würde die Einstellung zu setzen ^^,

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      das ist weniger ein sicherheitsrisiko als ein ärgernis (doppelte inhalte etc.). starte die session nur, wenn der besucher keine suma ist (machs am user-agenten oder der ip fest).

      ghostgamblers vorschlag hat den von ihm beschriebenen nachteil.
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        @ ghostgambler: bist du sicher, dass die ganze website dann nicht mehr funktioniert, oder heißt dass nur, dass die funktionen, die von der session abhängig sind, nicht mehr funktionieren? session.use_only_cookies = 1 ist doch auch eine einstellung in der php.ini und keine php-anweisung, oder?

        @ derHund: welchen wert haben sumas denn als user-agent? muss ich jetzt alle ips aller sumas überprüfen?

        in einem anderen zusammenhang wurde ich darauf aufmerksam gemacht, dass die variablen-abfrage nur mit $_SESSION['xyz'] funktioniert, wenn Safe Mode aktiviert ist (hat mit dem SID-Problem jetzt nichts zu tun). das hat dazu geführt, dass ich ein paar skripte überarbeiten musste. dabei habe ich auch erfahren, dass in einem solchen fall keine registrierung über session_register() mehr notwendig wäre. jetzt die frage: könnte diese maßnahme (session_register gegen $_SESSION[] tauschen) das problem mit der SID auch lösen? dann könnte ich mir die abfrage von ips und user-agenten sparen... (sorry für meine unfachmännischen formulierungen)
        http://www.zentralplan.de/

        Kommentar


        • #5
          Original geschrieben von hamoda108
          @ ghostgambler: bist du sicher, dass die ganze website dann nicht mehr funktioniert, oder heißt dass nur, dass die funktionen, die von der session abhängig sind, nicht mehr funktionieren? session.use_only_cookies = 1 ist doch auch eine einstellung in der php.ini und keine php-anweisung, oder?
          session funktioniert halt nicht mehr, so wie du annimmst und das andere ist auch richtig


          dabei habe ich auch erfahren, dass in einem solchen fall keine registriejetzt die frage: könnte diese maßnahme (session_register gegen $_SESSION[] tauschen) das problem mit der SID auch lösen?
          nein

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            @ derHund: welchen wert haben sumas denn als user-agent? muss ich jetzt alle ips aller sumas überprüfen?
            der ua der sumas ist von suma zu suma unterschiedlich

            name und ip erhälst du sehr einfach aus deinen logs, wenn du deine seite ein wenig analysierst, findest du das ganz schnell.
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              session.use_only_cookies = 1 scheint mir da dann doch die praktikablere lösung zu sein. dazu noch zwei fragen:

              1. kann ich die php.ini über mein skript beeinflussen oder muss das der admin vom server machen?
              2. gibt es eine möglichkeit zu überprüfen, ob der besucher cookies ausgeschaltet hat, und wenn ja welche?

              vielen dank!
              http://www.zentralplan.de/

              Kommentar


              • #8
                gibt es eine möglichkeit zu überprüfen, ob der besucher cookies ausgeschaltet hat, und wenn ja welche?
                Ja die gibt es. Starte die Session (setz den Cookie) und leite den Besucher auf die soeben aufgerufene Seite weiter. Wenn dann isset($_COOKIE['name_der_session']) true ergibt, dann akzeptiert der Client anscheinend Cookies. Nun hast du das Problem, dass es im Falle von abgelehnten Cookies vermutlich eine unendliche Weiterleiterei gibt. Du solltest auch die Session ID in der Weiterleitung anhängen, damit du feststellen kannst ob die Seite zum ersten Mal oder bereits einmal aufgerufen wurde (wenn bereits aufgerufen dann muss isset($_SESSION['session_name']) oder isset($_COOKIE['session_name']) true ergeben )

                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


                • #9
                  Original geschrieben von hamoda108
                  1. kann ich die php.ini über mein skript beeinflussen oder muss das der admin vom server machen?
                  ja so z.B.
                  PHP-Code:
                  ini_set('session.use_cookies',1);
                  session_start(); 
                  das Problem von google daß seite mit session indixiert kannst du vielleicht mit einen robot.txt file lösen:

                  User-agent: *
                  Disallow: /*?
                  In Flames - Pinbal Map
                  Becoming the Archetype - No Fall Too Far
                  Pantera

                  Kommentar


                  • #10
                    ja, vielen dank, das sind viele gute tipps, werde ich alle mal ausprobieren, ist mir aber neuland, seis drum...

                    zum thema robots.txt:

                    http://www.bjoernsworld.de/suchmasch...obots-txt.html

                    Was mit der robots.txt nicht geht:

                    Bei den Disallow: sind keine wildchars wie ? oder * erlaubt.
                    Zuletzt geändert von hamoda108; 22.05.2006, 14:48.
                    http://www.zentralplan.de/

                    Kommentar


                    • #11
                      zum thema robots.txt:
                      wenn du mal bei google schaust, siehst du, daß google durchaus wildcards in der robots.txt erlaubt. problem wird eher sein, daß durch o.g. ausschluß google gar keine seiten mehr aufnehmen wird (da ja alle mit ? ausgeliefert werden).
                      Die Zeit hat ihre Kinder längst gefressen

                      Kommentar


                      • #12
                        ich benutze eine einfache if/else konstruktion mit dem schnipsel hier:
                        http://www.php-resource.de/forum/sho...threadid=13043

                        - bist du sumabot = kein session_start()
                        - bist du ein email-collector = zeige eine email-liste bekannter abmahnanwälte *scherz* => die();
                        - der rest = session_start() und gut ist

                        keine 100%ige genauigkeit, allerdings bislang zuverlässig keine seiten mit session-ids in den suchmaschinen.
                        Kissolino.com

                        Kommentar


                        • #13
                          also ich hab das mit session.use_cookies versucht, aber der SID-String bleibt nach wie vor angezeigt. ich habe dann das verhalten der einträge in der php.ini untersucht, indem ich das skript geändert habe (s. http://www.gauranga.de/problem) und habe dabei festgestellt, dass die änderung nur für die dauer der einen seite erhalten bleiben, dann aber offenbar auf den ursprungswert zurückgesetzt werden. das gleiche gilt für session.use_only_cookies (man kann das auf der seite relativ anschaulich ausprobieren). vermutlich habe ich da irgendwo einen denkfehler, aber wo?

                          immerhin wird eine meldung angezeigt, wenn man cookies deaktiviert, das klappt schon mal...

                          php.ini: http://www.gauranga.de/info.php
                          Zuletzt geändert von hamoda108; 23.05.2006, 08:33.
                          http://www.zentralplan.de/

                          Kommentar


                          • #14
                            Hallo.

                            Ich versuche auch schon Ewigkeiten die PHPSESSIONID los zu werden.

                            In meinen Header:

                            PHP-Code:

                            if(preg_match("#Googlebot#i"getenv("HTTP_USER_AGENT"))){
                            @
                            ini_set("url_rewriter.tags""");
                            }

                            ob_start();
                            @
                            session_start(); 
                            Ich hab auch schon die andere Variante probiert und hab keinen Erfolg.

                            Log:
                            25/May/2006:13:38:30 +0200] "GET /8986/_5.html&PHPSESSID=1983ed9f7d1534948277308af7bdf1c7 HTTP/1.1" 200 14651 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http

                            Hat noch wer eine Idee?



                            Update:

                            PHP-Code:
                            if(preg_match("#Googlebot#i"getenv("HTTP_USER_AGENT"))){

                            @
                            ini_set("url_rewriter.tags""");

                            } else {

                            ob_start();
                            @
                            session_start();


                            Zuletzt geändert von YourHammer; 25.05.2006, 13:08.
                            PR4 Webkatalog

                            Kommentar


                            • #15
                              keine session starten, wenn ein (suma-)bot auftaucht. es gibt keine situation, in der ein bot eine session bräuchte.
                              Die Zeit hat ihre Kinder längst gefressen

                              Kommentar

                              Lädt...
                              X