SESSIONS

Sessions und Suchmaschinen

Sessions sind in vielen Fällen notwendig, u.a. um:

  • Den Weg der Besucher einer Website zu tracken
  • Bestimmte Informationen zu speichern (wie etwa den Inhalt eines Warenkorbes)

Die Informationen in Verbindung mit jeder Session werden in einer Datei auf dem Server gespeichert. Es handelt sich hierbei um eine alleinige Datei, für jeden Nutzer wird ein eigenes Kennwort erstellt. Dieses Kennwort ist eine Textkette, die aus mindestens 32 Zeichen besteht. Diese ermöglicht die Kommunikation zwischen dem Nutzer und der Datei mit den Informationen der Session.

Das Kennwort kann in einem Cookie (Also auf dem Computer des Nutzers) gespeichert werden. Dies ist die am meisten verbreitete Vorgehensweise. Sollte der Nutzer allerdings keine Cookies akzeptieren, kann dieses Kennwort auch über die URL übermittelt werden. Mit Sicherheit haben Sie bereits URLs mit solchen oder ähnlichen Ketten gesehen: ?PHPSESSID=a9e8dc705da1560e9b6d4c1a65ae3245.

Probleme der Sessions bzgl. SEO

Man muss wissen, dass Suchmaschinen keine Cookies akzeptieren. Daher umgehen zahlreiche Websites dieses Problem, indem sie zur Übermittlung der Kennwörter für die Sessions URLs benutzen und damit fangen die Probleme an.

Bots indexieren diese Art URL, was wir im Übrigen mit Leichtigkeit überprüfen können. Zu diesem Zweck genügt es, folgende Suchanfrage in den Motor Ihrer Wahl einzugeben.

Im Durchschnitt werden die für die Sessions zuständigen Dateien (je nach Serverkonfiguration) etwa 30 Minuten lang aufbewahrt. Sobald der Bot zurückkommt, wird eine neue Session mit einer neuen zu indexierenden URL eröffnet. Dabei ist zu beachten, dass der Inhalt mit demjenigen der zuvor durch den Bot besuchten Page identisch ist. Bots können daher hunderte Male dieselbe Page indexieren.

Wie Sie sich vorstellen können, registrieren die Suchmaschinen nach einiger Zeit 2 hauptsächliche Probleme:

  • Keine dauerhafte URL
  • Inhaltsvervielfältigung
  • Unendlich große Zahl an zu indexierenden Pages

Welche Lösungen gibt es, um die Sessions verschwinden zu lassen?

Lediglich zu sagen, dass man keine Sessions verwenden sollte, ist natürlich keine annehmbare Lösung.  In der Tat können die Sessions für Software-Entwickler sehr praktisch sein, wie wir zu Beginn dieses Artikels gesehen haben. Wie also lassen sich die Session IDs in den URLs löschen? Mehrere Lösungen lassen sich in Betracht ziehen:

  • Nur dann eine Session eröffnen, wenn dies wirklich von Nutzen ist. Bestimmte Websites eröffnen eine Session sobald eine beliebige Webpage geöffnet wird, obgleich diese erst genutzt wird, sobald sich der Nutzer eingeloggt hat.
  • Sämtliche Zugangsdaten ausschließlich über Cookies und nicht über die URL weiterleiten.
  • Auf Nutzer, die keine Cookies akzeptieren, verzichten und die Weitergabe von Zugangsdaten über URLs zu verbieten
  • Bots identifizieren und Sessions ausschließlich mit Nutzern eröffnen

Zugangsdaten für die Session in den URL mit htaccess verbieten

SetEnv SESSION_USE_TRANS_SID 0

Zugangsdaten für die Session in den URL über php.ini verbieten

session.use_trans_sid = 0

Für IIS Server habe ich bereits einen Netzadministrator gesehen, der dieses Problem durch eine einfache Option in seinem Administrationsbereich gelöst hat.

Weitergabe der Zugangsdaten für eine Session in den URLs verbieten

/* Deaktivieren der Erkennung der Session-ID in der URL */
ini_set('session.use_trans_sid', "0");
/* Erlaubnis für die Verwendung von Cookies */
ini_set('session.use_cookies', "1");
/* Erlaubnis für die AUSSCHLIESSLICHE Verwendung von Cookies */
ini_set('session.use_only_cookies', "1"); */
/* Verbot, die Session-ID in den erstellten HTML-Code einzufügen */
ini_set("url_rewriter.tags","");
/* Alles ist unter Kontrolle, Session wird eröffnet */ session_start();

Natürlich sind kürzere Codes möglich, die vorliegende Version ist für all diejenigen, die auf Nummer Sicher gehen wollen 🙂

Bots in PHP erkennen

Es gibt mehrere Methoden, um Bots zu erkennen. So ist es beispielsweise möglich, den User Agent, den Host und die IP-Adresse jedes einzelnen Nutzers zu kontrollieren und anschließend eine Session zu eröffnen, oder auch nicht. Hier ein Vorschlag, wie ausschließlich der User Agent kontrolliert werden kann:

<?php
function checkUaRobot(){
$robot = false;
$_UA = array("GoogleBot", "Slurp","MsnBot");
// Kompletieren Sie die Liste mit sämtlichen gewünschten UA

foreach($_UA as $ua) {
// User Agent des Besuchers wird mit unserer Liste verglichen
if(eregi($ua,$_SERVER["HTTP_USER_AGENT"])) return true;
}

// UA ist nicht in unserer Liste verzeichnet, es handelt sich um einen menschlichen Nutzer
return false;
 }
?>

// Aufrufen der Funktion
if (!checkUaRobot()) { session_start(); }
?>

Eine letzte Lösung besteht darin, Google die Dinge selbst regeln zu lassen. Irgendwann wird Google von selbst Ordnung schaffen, und die vervielfältigten Pages löschen... dies ist allerdings keine empfehlenswerte Lösung.

 

Nächste : Formulare

Vorherige : TECHNISCHE

Oseox Monitoring