krjdev: Wichtiger Hinweis im Umgang mit PHP

Beitrag lesen

Hallo liebe SelfHTML Freunde!

Da ich die Wikiartikel gerne als Hilfestellung hier genutzt habe und auch die erste Anlaufstelle bezüglich PHP war, möchte ich gerne hier im Umgang mit PHP auf was wichtiges hinweisen. Ich habe einen Artikel geschrieben, der jetzt nicht mehr Online ist, bis sich die Sache mit meinem ISP geklärt hat. Hab die Server vom Netz nehmen müssen aufgrund eines Fehler im PHP Code. Vorweg es war keine Sicherheitslücke im Code

Zugegeben ist ein etwas langer Text, soll aber veranschaulichen auf was man unbedingt achten sollte, wenn man PHP verwendet. Vielleicht erwähnt Ihr das ja einmal in der Wiki, damit andere nicht den selben Fehler machen. Richtet sich an Quereinsteiger.

Suchmaschinen und Robots: Wenn eine Maschine nur den Fehlercode abfragt.

Oder:

Google bitte verliere dein Gedächtnis: Suchmaschinen und was man nicht falsch machen sollte wenn man eine Webseite betreibt.

Ein Artikel von [ENTFERNT] "krjdev" [ENTFERNT]

Letzte Aktualisierung am 23. Oktober 2021

Vorwort

Dieser Artikel richtet sich hauptsächlich an Webseitenentwickler wie mich, die aus Lernzwecken fast alles bei einer Webseite selber machen wollen und keine Baukastensysteme wie WordPress und Konsorten verwenden wollen. Der folgende Text entspricht nach einer wahren Begebenheit, die mir mit dieser Webseite widerfahren ist. Der Artikel ist möglicherweise deswegen nicht neutral formuliert, da ich voreingenommen durch diesen von mir peinlichen Fehler bin. Auch wenn hier über diesen Fehler Einige schmunzeln werden, ist es aber leider für mich derzeit nicht zum Lachen zumute, bis Google, Microsoft Bing und andere Suchmaschinen das Problem lösen, oder sich das Problem im Laufe der Zeit von selber löst. Der Artikel beinhaltet technische Begriffe im Bereich der Webentwicklung und ist in erster Linie an Menschen gerichtet die schon zu mindestens ein Grundwissen über die Funktionsweise des Internets haben. Sollten Ihnen aber trotzdem ein paar Begriffe nicht bekannt sein, dann finden Sie im letzten Abschnitt dieses Artikels Links zu Wikipedia Artikeln.

Die Geschichte

Ich betreibe diese Webseite seit Anfang 2018, angefangen mit reinen statischen HTML Seiten. Diese habe ich dann im Jahr 2020 auf pseudo-dynamische Seitengenerierung mittels PHP umgestellt. Mit pseudo-dynamisch meine ich damit, dass der ganze HTML Code bzw. Inhalt im PHP Skript vorhanden war. Wurde nicht über eine Datenbank bezogen, so wie das jetzt auf dieser neuen Seite der Fall ist. Natürlich war es durch diesen Designfehler meinerseits sehr umständlich neue Inhalte bereit zu stellen. Deswegen habe auch seit der Umstellung keine neue Inhalte hinzugefügt. Der Zweite aber schwerwiegende Fehler war, – der Grund warum ich diesen Artikel zur Schadensbegrenzung hier veröffentliche – dass ich im HTTP Header keinen richtigen Statuscode gesetzt habe, wenn zum Beispiel eine Seite nicht verfügbar ist oder die URL Parameter ungültig sind. Für normale Benutzer die diese Seite über einen Browser ansehen, ist bei falschen Angaben immer auf meine Startseite verwiesen worden, was ich damals nicht als schwerwiegend angesehen habe. Ich habe aber damals Eines Aufgrund meines fehlenden Wissensstandes in diesem Bereich nicht bedacht: Und zwar das Verhalten der Robots der Suchmaschinenbetreiber und Skripte die meine Seite analysieren. Diese kontrollieren derzeit nämlich vorrangig den Statuscode einer Seite und überprüfen so ob eine Seite oder Parameter gültig ist. Im korrekten Fall hätte ich müssen einen 4xx Statuscode für diese Robots und Skripte ausliefern sollen wenn eine Anfrage nicht gültig ist. Habe ich aber damals nicht, und das hat sich sehr negativ auf den Suchmaschinen und externen Seiten ausgewirkt.

Im Detail

Wenn ein Robot oder Skript eine Anfrage an den Webserver sendet, dann parst das Programm vorrangig zuerst im HTTP Header den Statuscode. Ein möglicher Header kann so bei einer HTTP GET Anfrage aussehen (hier mit dem Programm telnet illustriert):

[Hier war ein Link auf ein Screenshot mit einer manuellen Anfrage mit telnet, auf meiner Homepage.]

Wie Sie sehen steht in der ersten Zeile die Protokollversion (HTTP/1.1) und die Zahl 200, die bedeutet dass die Anfrage erfolgreich war. Nachfolgend sehen Sie andere Header Parameter gefolgt vom eigentlichen Inhalt der jeweiligen Seite. Manche Robots und Skripte überprüfen hier nur den Statuscode 200 vom Header. Wenn diese Zahl abweicht, dann wird der restliche Inhalt nicht mehr analysiert bzw. verworfen. Zugeben ich würde es vermutlich, wenn ich so einen Robot schreibe, auch nicht anders machen.

Das Problem

Das Problem dabei ist wenn Robots und Skripte nicht den eigentlichen Inhalt lesen, dass wie bei meiner Seite passiert ist, es zu schwerwiegenden Seiteneffekten führt, wenn diese nicht existenten URL’s auf einer Webseite in eine Datenbank oder auf externen Webseiten gespeichert werden. Hier bringe ich den SEO Begriff Backlinks in Spiel. Das sind Verweise auf externen Seiten auf die eigene Webseite verweisen. Robots und Skipte reagieren auf diese Links wenn Sie diese auf einer externen Seite erscheinen, da für Robots und Skripte alles anscheinend verlinkt bzw. vernetzt sein muss. Es wäre aus meiner Sicht kein Problem dabei, wenn diese Robots auch den Link folgen würden und auch den Inhalt verifizieren. Was nicht immer bei den Suchmaschinenbetreiber geschieht. Sollte sich schon wer mal bei der Google Search Konsole angemeldet haben, wird vermutlich den Begriff Duplikat kennen. Hier wurde der Inhalt bei einer URL tatsächlich zu einen gewissen Grad überprüft und als gleich befunden. Das machen aber leider nicht alle Suchmaschinenbetreiber.

Die Folgen

In technischer Hinsicht besteht darin kein Problem, wenn in Suchmaschinen und externen Seite falsche Verweise stehen. Aber es kann den Ruf einer Webseite massiv beschädigen, anhand meines Beispieles: Meine Webseite war als eine Art Bewerbungsseite gedacht. Wo ich technische Artikel und Projekte im Bereich Elektronik und Programmierung vorstelle. Was ich noch, trotz diesem peinlichen Fehler auch noch mache. Was ich jetzt nachfolgend beschreibe ist kein technisches Problem sondern ein gesellschaftliches Problem in unseren Breitengraden. Für Maschinen ist eine (ungültige) URL nur eine Zeichenkette ohne Bedeutung, sofern keine KI verwendet wird. Für Menschen kann dies allerdings unterschiedliche Reaktionen auslösen, wenn sie diese Zeichenkette auf einer Suchmaschine oder auf fremden Seiten sehen. Leider neigen manche Menschen dazu, wenn Sie so eine Zeichenkette sehen, nicht die Quelle überprüfen. Das heißt, sie folgen nicht den Link auf die betroffene Webseite. So entsteht aber ein falsches Vorurteil über eine Webseite. Sofern Sie mich noch folgen können, Betreff meiner Webseite denken möglicherweise jetzt manche Menschen, dass ich eine schmuddelige Seite betreibe, was diese nachfolgenden Serverlogs von Suchmaschinenanfragen (hier der Bing) beweisen:

www.[ENTFERNT].com 40.77.167.17 - - [22/Oct/2021:16:08:00 +0200] "GET /search/pXrnX+casero?top HTTP/1.1" 400 0 "" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" - -

[Ich habe die Anfrage im Serverlog entschärft, war nicht jugendfrei.)

Natürlich war auf meiner Seite nicht ein solcher Inhalt vorhanden und diese Menschen hätten das auch erkannt, wenn sie den Link aufgerufen hätten anstatt das restliche Internet zu vertrauen.

Nachtrag

Ich werde diesen Artikel nach Möglichkeit noch weiter ergänzen. Hoffe aber, dass der Ruf dieser Webseite mit dem Lauf der Zeit sich wieder ändert und bestimmte Links wieder von den Suchmaschinen und externen Seiten gelöscht werden. Ich habe jedenfalls aus meinen peinlichen Fehler gelernt.

1 49

Wichtiger Hinweis im Umgang mit PHP

krjdev
  • http-status
  • php
  1. 0
    Matthias Scharwies
    1. 1
      krjdev
      1. 0
        Matthias Scharwies
        1. 0
          krjdev
          1. 0
            Raketenverschlimmbesserer
  2. 0

    Hat vorliegend mit PHP nichts zu tun, „ist Grundrauschen“

    Raketenflugkontrolle
    • http-status
    • php
    • sicherheit
    1. 0

      Nachtrag

      Raketenflugkontrolle
      1. 0
        Matthias Scharwies
        1. 0
          krjdev
          1. 0
            Raketenflugkontrolle
            1. 0
              krjdev
            2. 0
              krjdev
              1. 0
                Raketenflugkontrolle
                1. 0
                  krjdev
            3. 0
              Rolf B
        2. 0
          Raketenflugkontrolle
    2. 0

      Bevor gefragt wird ... mod_rewrite bekommt die Anfrage auch nicht / Keine Panik!

      Raketenflugkontrolle
      1. 0
        krjdev
        1. 0
          Raketenflugkontrolle
          1. 0
            krjdev
          2. 0
            krjdev
            1. 0
              Raketenflugkontrolle
              1. 0
                Rolf B
                1. 0
                  Raketenflugkontrolle
                  1. 0
                    Raketenflugkontrolle
              2. 0
                krjdev
                1. 0
                  Rolf B
                  1. 0
                    Felix Riesterer
    3. 0
      krjdev
      1. 0

        Ultimatives „Nein“.

        Raketenflugkontrolle
        1. 0
          krjdev
          1. 0
            Raketenflugkontrolle
            1. 0
              Der Martin
              1. 0
                Raktenflugkontrolle
                1. 0
                  Rolf B
                  1. 0
                    Raketenflugkontrolle
                    1. 0
                      Rolf B
                    2. 0

                      Habs gefunden ...

                      Raketenflugkontrolle
                      1. 0
                        krjdev
                        1. 0
                          Rolf B
                          1. 0
                            krjdev
                        2. 0
                          Raketenflugkontrolle
  3. 0
    Rolf B
  4. 0
    klawischnigg
    1. 0
      Rolf B
      1. 0
        klawischnigg
        1. 0
          Rolf B
  5. 0
    Raktenflugkontrolle