2017-06-27 1 views
3

Ich stolperte auf seltsame Verhalten heute auf einer Website bei der Arbeit. Unser SEO-Berater wollte einige merkwürdig aussehende Links, die vom Googles-Index entfernt wurden, eine scheinbar unkomplizierte Aufgabe. Aber es erwies sich als sehr schwierig.Weird URL Umgehung Routing, Klammer Großbuchstaben Klammer alles zwei schließende Klammern

Die Website war eine .net MVC 5.2.3 Anwendung. Wir haben uns das Routing, unsere eigenen Bibliotheken usw. angesehen. Nichts Seltsames. Nach einer Weile gaben wir auf und versuchten einfach eine Weiterleitungsanforderung an diese URLs, indem wir in web.config eine Regel aufstellten. Stellt sich heraus, diese URL: s sind unübertroffen! Irgendwie unter den richtigen Bedingungen scheint der kritische Teil der URL Regeln zu vermeiden, die später in der MVC-Anwendung weitergeleitet werden.

Wir haben die mystische URL: s auf das Format (T(anything)) eingegrenzt, wo T durch jeden Großbuchstaben und alles kann eh sein, alles. Dies wird am Anfang der URL platziert, als wäre es ein Verzeichnis. In regex: \([A-Z]\([a-zA-Z0-9]*\)\)

habe ich getestet und das gleiche Verhalten auf:

Einige Beispiele aus stackoverflow.com:

Es scheint nicht zu beeinflussen ganzes Web, also sollte es kein Browser- oder HTTP-Problem sein. Einige Beispiele:

Kann jemand erklären, was los ist?

Und was kann ich tun, um zu verhindern, dass diese URL: s Routing umgehen?

Antwort

2

Offenbar ist dies eine Funktion namens "cookieless Sitzung" in ASP.NET. Siehe "Cookieless SessionIDs" Abschnitt here in den MSDN-Dokumenten.

Die Grundidee besteht darin, dass die Sitzungs-ID (wenn der Sitzungsstatus aktiviert ist) nicht in einem Cookie gespeichert wird, sondern in der URL eingebettet ist.

Wir (Stack Overflow) deaktivieren den Sitzungsstatus vollständig (indem auf off eingestellt wird).Soweit ich weiß, ist das Endergebnis, dass zu jeder Zeit, die eine URL verwendet wird, die mit dem Session-ID-Format übereinstimmt, diese Information einfach verworfen wird.

Keiner der Links, die zu uns in Google führen, enthält es auch, was mich denken lässt, dass Ihre Site möglicherweise so konfiguriert ist, dass sie tatsächlich Sitzungs-IDs in URLs generiert? Kurz davor, die Funktion zu deaktivieren, gibt es wahrscheinlich nicht viel, was Sie hier tun können. Siehe jedoch unter "Regenerieren abgelaufener Sitzungsbezeichner" auf der oben verlinkten MSDN-Seite, um zu erfahren, wie die versehentliche Sitzungsfreigabe zumindest verhindert werden kann, falls dies noch nicht geschehen ist.

Verwandte Themen