registrieren registriertes Mitglied


Anzeige

Anzeige

Per mod rewrite die SessionID entfernen?

Hier kannst Du Deine Fragen zum Thema Suchmaschinenoptimierung (SEO) stellen.
ani-K
PostRank 5
PostRank 5
Beiträge: 220
Registriert: 09.01.2006, 16:00

Beitrag ani-K » 22.12.2015, 12:35 Per mod rewrite die SessionID entfernen?

Ich habe seit mindestens drei Monaten (habe ich gerade in den Logs gesehen) das Problem, dass der BingBot immer wieder Seiten mit wechselnder an der URL angehängter Session ID aufruft.
Eigentlich werden die Bots erkannt und dann auch keine Session vergeben. Wenn ich den Useragent in meinem Browser simuliere funktioniert das auch. Deshalb vermute ich, dass der BingBot in der Vergangenheit nicht richtig erkannt wurde und er die URLs mit Session ID in der Zeit abgespeichert hat.
Das Problem tritt auch nur beim BingBot auf. Google crawlt stehts ohne session ID.

Gibt es eine Möglichkeit per mod rewrite den user agent zu überprüfen und dann die SessionId zu entfernen ohne eventuell weitere parameter abzuschneiden?

Hier eine typische Zeile aus der LogDatei:

Code: Alles auswählen

msnbot-207-46-13-94.search.msn.com - - [22/Dec/2015:09:59:11 +0100] "GET /checkout_shipping.php?MODsid=k645dn0uc6mqv7etlofm2j37v0 HTTP/1.1" 301 910 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"

Anzeige von:

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Rem
PostRank 10
PostRank 10
Beiträge: 3883
Registriert: 08.12.2005, 18:45

Beitrag Rem » 22.12.2015, 13:24 Per mod rewrite die SessionID entfernen?

Ja, für Teil 2 ist die Lösung womöglich das hier:

RewriteCond %{QUERY_STRING} (.*)PHPSESSID
RewriteRule ^(.*) /$1?%1 [R=301,L]

Ich hatte mal ein ähnliches Problem mit dem Query String fb_action_ids

Teil 1 kann man schon dranmachen. Das Problem ist allerdings bei Dir zuerst zu lösen: Warum the fucking hell kannst Du für die Session IDs nicht Cookies nutzen?

Wenn das technologisch gelöst ist, entfällt die Abfrage des Useragents. Fände ich besser.

ani-K
PostRank 5
PostRank 5
Beiträge: 220
Registriert: 09.01.2006, 16:00

Beitrag ani-K » 22.12.2015, 14:15 Per mod rewrite die SessionID entfernen?

Normalerweise werden Cookies für die Session benutzt. Gibt aber leider genug Kunden, die Cookies abgeschaltet haben und auch auf die will ich nicht verzichten.
Aus dem Grund überprüft der Shop anhand des Useragenten ob es sich um einen Spider (die ja auch keine Cookies akzeptieren) handelt und lässt in dem Fall die SessionID trotzdem weg.
Irgendwie hat das wohl eine Zeit lang beim BingBot nicht funktioniert.

Aus dem Grund, suche ich eine mod rewirte Regel, die
1. überprüft, ob im Useragent "bingbot" vorkommt UND in der URL "MODsid=" vorkommt
2. wenn ja soll auf die URL ohne "MODsid=" und die SessionID aber alle übrigen Parameter weitergeleitet werden

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag Melegrian » 23.12.2015, 07:09 Per mod rewrite die SessionID entfernen?

Ist eigentlich bereits die Grundeinstellung, lässt sich aber auch im Script wiederholen, falls man selbst keinen Zugriff auf die php.ini hat:
ini_set("session.use_trans_sid", "0");
ani-K hat geschrieben:Normalerweise werden Cookies für die Session benutzt. Gibt aber leider genug Kunden, die Cookies abgeschaltet haben und auch auf die will ich nicht verzichten.
Das fällt dann zwar flach, doch auf welche Statistiken stützt Du Deine Behauptung, dass es genug Kunden gibt, die Cookies generell abgeschaltet haben? Verwechsle hier nicht Cookies von Drittanbietern, deren Annahme bei einigen deaktiviert sein könnte, mit Session-Cookies von Erstanbietern. Und für die wenigen, deren Anzahl irgendwo im 0,... Bereich liegen dürfte, lässt sich auch der Hinweis einblenden, dass für eine Bestellung die Einstellungen entsprechend anzupassen sind.

Habe mal kurz nach einer Statistik gesucht, entweder gibt es keine oder ich habe nur keine gefunden. Was ich gefunden habe, das ist lediglich nichts Verwertbares:
Laut statista löschen oder unterdrücken im Jahr 2014 von etwa 46,6 Millionen Internetnutzer in Deutschland 30,87 Millionen User Cookies
https://www.affiliate-deals.de/gefahren ... eicherung/

Besagt ja nur, dass die ab und an mal Cache und Cookies beräumen und wer tut das nicht, was ja noch lange nichts mit der Annahme von Cookies zu tun hat. Die Verweigerung von Session-Cookies und Erstanbieter-Cookies würde ich geschätzt bei weit unter 1% ansetzen.

ani-K
PostRank 5
PostRank 5
Beiträge: 220
Registriert: 09.01.2006, 16:00

Beitrag ani-K » 24.12.2015, 11:12 Per mod rewrite die SessionID entfernen?

Ich wollte eigentlich nicht darüber diskutieren, ob ich Kunden habe, die Cookies deaktiviert haben, sondern ich habe nach Vorschlägen gesucht, die für den bingbot diese ohne Session in der URL umleitet.
Ich beliefert Firmen, die Cookies teilweise deaktiviert haben und ich will auf diese Kunden auch nicht verzichten.

Obwohl per Skript die bekannten Spider keine Session erhalten, schafft es der bingbot immer wieder an URLs mit Session-ID zu kommen.

Ich möchte also per rewrite Regel diese Session beim bingbot “abschneiden“.
Die Lösung von Rem funktioniert schon mal, überprüft jedoch nicht den UserAgent. Es soll aber nur abgeschnitten werden, wenn bingbot im UserAgenten vorkommt.

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag Melegrian » 24.12.2015, 12:23 Per mod rewrite die SessionID entfernen?

Sessions dienen mit (nicht nur allein) der Sicherheit und jedes Rumpfuschen kann unter ungünstigen Umständen auch nach hinten losgehen. Beim ersten Mal ist es ein Bingbot und beim letztem Mal ein Hacker, der sich als Bingbot tarnte. Freilich könntest Du noch eine weitere Kondition hinzufügen, nur was bringt das?

Code: Alles auswählen

RewriteCond %{HTTP_USER_AGENT} ^.*bingbot.*$ [NC]
Damit könnte sich dann jeder, der mit einem als bingbot gefälschten User Agent kommt, sich bewegen, als würde es in Deinem Script keine Sessions geben, weil die zwar noch erzeugt werden, aber auf der nächsten Seite bereits wieder abgehängt werden. Wenn es die Sicherheit der Anwendung verlangt, dann muss es halt klare Regeln geben, wann eine Session erzeugt wird, was in einer Session gespeichert werden darf und wie mit den Daten zu verfahren ist.

Nebenbei wäre ich mir, je nach Script, nicht so sicher, ob in diesem Fall bei 100 Seitenaufrufen durch einem Bingbot nicht auch 100 Sessions statt einer erzeugt würden. Habe ich noch nicht ausprobiert, weiß ich nicht und kann heute auch nicht soweit denken.

ani-K
PostRank 5
PostRank 5
Beiträge: 220
Registriert: 09.01.2006, 16:00

Beitrag ani-K » 26.12.2015, 10:38 Per mod rewrite die SessionID entfernen?

Danke, mach dir aber keine Sorgen um die Sicherheit. Wer eine Webanwendung so programmiert, dass durch den Verlust einer Session mehr Rechte eingeräumt werden, ist schneller gehackt als er gucken kann.
Umgekehrt kann es ein Sicherheitsrisiko darstellen, wenn Suchmaschinen Webanwendungen mit Session-ID crawlen und in ihren Ergebnissen so ausgeben.
Darüber hinaus befürchte ich, dass die selbe Seite mit unterschiedlicher Session in der URL als DC gewertet werden kann, denn meines Wissens, kann man das bei Session in der URL nur bei Google in den Webmaster Tools verhindern. Bei bing geht das leider nicht.

Ohne Session steht nur der öffentlich Bereich der Seite zur Verfügung und auch mit Session muss man sich erst einloggen. Zusätzlich wird zur Sicherheit überprüft, ob die Session nur einmalig und von einem Rechner aus genutzt wird.

Wenn also jemand meint sich als BingBot ausgeben zu müssen, muss er auch damit leben, sich nicht einloggen zu können. Ich denke Dank deinem Hinweis aber darüber nach, beim Einlogversuch ohne Session einen Hinweis auszugeben.

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag Melegrian » 26.12.2015, 12:53 Per mod rewrite die SessionID entfernen?

Na wenn Du Dich mit dem Script auskennst, so frage ich mich, warum Du vom Script bei Bots erst eine Session erzeugen lässt, nur um diese dann wieder abzuhängen?

Nur einmal als Anregung, ungetestet, sollte jedoch erst gar keine Session erzeugen, wenn ein Bot kommt, der sich als Bot zu erkennen gibt, wie es der Googlebot und Bingbot tun:

Code: Alles auswählen

if (!session_id() and stristr($_SERVER["HTTP_USER_AGENT"], "bot") === false) session_start();

ani-K
PostRank 5
PostRank 5
Beiträge: 220
Registriert: 09.01.2006, 16:00

Beitrag ani-K » 26.12.2015, 16:28 Per mod rewrite die SessionID entfernen?

Habe ich eigentlich schon zu Anfang beschrieben:
Eigentlich bekommen Bots auch keine Session-ID. Das funktioniert auch prima.
Irgendwie hat der bingbot aber URLs die er mit Session in der URL aufruft.
Die will ich nun einfach über die 301 Weiterleitung eliminieren.

ani-K
PostRank 5
PostRank 5
Beiträge: 220
Registriert: 09.01.2006, 16:00

Beitrag ani-K » 28.12.2015, 12:17 Per mod rewrite die SessionID entfernen?

Nur der Vollständigkeit halber:
Die komplette Lösung für diesen Fall lautet

Code: Alles auswählen

RewriteCond %{HTTP_USER_AGENT} ^.*bingbot.*$ [NC]
RewriteCond %{QUERY_STRING} (.*)XTCsid [OR]
RewriteCond %{QUERY_STRING} (.*)&XTCsid
RewriteRule ^(.*) /$1?%1 [R=301,L] 
Danke an Melegrian und Rem!

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag Melegrian » 28.12.2015, 12:49 Per mod rewrite die SessionID entfernen?

Du weißt hoffentlich schon, dass die erste Kondition mit AND verknüpft wird, falls kein OR angegeben wurde?
ani-K hat geschrieben:

Code: Alles auswählen

RewriteCond %{HTTP_USER_AGENT} ^.*bingbot.*$ [NC]
RewriteCond %{QUERY_STRING} (.*)XTCsid [OR]
RewriteCond %{QUERY_STRING} (.*)&XTCsid
RewriteRule ^(.*) /$1?%1 [R=301,L] 
Würde das so interpretieren (Irrtum meinerseits nicht ausgeschlossen):

Bedingung trifft zu, wenn (bingbot und XTCsid) oder wenn nur (&XTCsid).

ani-K
PostRank 5
PostRank 5
Beiträge: 220
Registriert: 09.01.2006, 16:00

Beitrag ani-K » 28.12.2015, 14:32 Per mod rewrite die SessionID entfernen?

Danke für Deinen Hinweis, das wäre dann natürlich nicht in meinem Interesse und ich habe es gerade getestet. Ohne BingBot im UserAgenten wird die RewriteRule nicht ausgeführt. Auch nicht wenn &XTCsid in der URL vorkommt.
Es ist also so zu interpretieren: Bedingung trifft zu, wenn bingbot UND (XTCsid ODER &XTCsid).

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag Melegrian » 28.12.2015, 14:57 Per mod rewrite die SessionID entfernen?

ani-K hat geschrieben:Es ist also so zu interpretieren: Bedingung trifft zu, wenn bingbot UND (XTCsid ODER &XTCsid).
Nein, ist es nicht. Wenn Du mit Bingbot abfragst, dann trifft immer die erste und zweite zu, da der Teil XTCsid von &XTCsid bereits mit in der zweiten enthalten ist und mit (.*)XTCsid gefunden wird, auch wenn Du das so als Parameter mit & verknüpfst. Du müsstest im Test nur &XTCsid ohne Bingbot abfragen, wenn Du es genau wissen möchtest.

Der Einfachheit halber die Bedingungen mal mit PHP, wobei nur Variante drei das erwartete Ergebnis bringen würde. Also (A und B) oder (A und C) aber niemals A und B oder C, wenn auch C mit A verknüpft bleiben soll.

Ausgabe erfolgt ohne Bingbot im String mit gefunden!

Code: Alles auswählen

<?php

$string = "... &XTCsid ...";

if &#40;strstr&#40;$string, "Bingbot"&#41; and
    strstr&#40;$string, "XTCsid"&#41;   or
    strstr&#40;$string, "&XTCsid"&#41;&#41; &#123;

    echo "Wurde gefunden, Bedingungen trafen auch ohne Bingbot zu!"; 
&#125;
else  echo "Nicht gefunden!"; 
?>
Ausgabe erfolgt ohne Bingbot im String mit nicht gefunden!

Code: Alles auswählen

<?php
$string = "... &XTCsid ...";

if &#40;strstr&#40;$string, "Bingbot"&#41; and
    strstr&#40;$string, "XTCsid"&#41;   or
    strstr&#40;$string, "Bingbot"&#41; and
    strstr&#40;$string, "&XTCsid"&#41;&#41; &#123;

    echo "Wurde nicht ohne Bingbot gefunden!"; 
&#125;
else  echo "Nicht gefunden!"; 
?>
Ausgabe erfolgt mit Bingbot im String mit gefunden!

Code: Alles auswählen

<?php
$string = "... Bingbot ... &XTCsid ...";

if &#40;strstr&#40;$string, "Bingbot"&#41; and
    strstr&#40;$string, "XTCsid"&#41;   or
    strstr&#40;$string, "Bingbot"&#41; and
    strstr&#40;$string, "&XTCsid"&#41;&#41; &#123;

    echo "Wurde mit Bingbot gefunden!"; 
&#125;
else  echo "Nicht gefunden!";

ani-K
PostRank 5
PostRank 5
Beiträge: 220
Registriert: 09.01.2006, 16:00

Beitrag ani-K » 29.12.2015, 11:16 Per mod rewrite die SessionID entfernen?

Bezüglich PHP magst Du ja Recht haben. In der htaccess ist es aber anders und ich habe es ja getestet.
Zur Sicherheit habe ich einen Useragentswitcher installiert und es ist genau so, wie ich es oben beschreibe.

EDIT: und nun funktioniert auch alles

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag