Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Referer sperren

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Referer sperren

    Hallo zusammen

    ich habe eine etwas ungewöhnliche Konstellation, die sich nicht per htaccess schützen lässt. Von der root gehen nämlich 3 Verzeichnisse als TLD's aus. Normalerweise liegt die htaccess ja in dem Verzeichniss, welches von ihr geschützt werden soll und eventuell vorhandene ErrorDocuments im übergeordneten Verzeichnis. In meinem Fall sollen aber alle drei Verzeichnisse gleichermassen geschützt werden. Mit einer htaccess auf der root geht es zwar, aber für einen ganz bestimmten referer soll ein ErrorDocument aufgerufen werden. Inzwischen habe ich die verschiedensten Varianten ausprobiert und konnte dann selber nicht mehr auf meine Verzeichnisse zugreifen, bzw. ich bekam die entsprechende Error-Meldung. Da sich das Problem offensichtlich nicht mit htaccess-Dateien lösen lässt, suche ich nach einer Lösung mittels PHP den referer über die index-Dateien zu sperren und auf das entsprechende ErrorDocument zu leiten. Bisher war meine Suche leider erfolglos. Hat hier vielleicht jemand eine Idee, wie man einen referer per PHP sperren und auf ein ErrorDocument umleiten kann?

    Besten Dank für konstruktive Vorschläge im Voraus
    PhoenixAter


  • #2
    https://www.interaktiv.net/blog/allg...erer-umleiten/

    Kommentar


    • #3
      Danke patrickhp. Den Verweis kenne ich schon und wenn ich mich richtig erinnere, hatte ich geschrieben, dass htaccess keine Lösung ist. Aus diesem Grunde frage ich ja nach einer Möglichkeit es in den index-Dateien per PHP zu realisieren.

      PhoenixAter

      Kommentar


      • #4
        Wie identifizierst du denn den unerwünschten Referer?

        Kommentar


        • #5
          An Hand seiner URL, würde ich mal meinen.

          PhoenixAter

          Kommentar


          • #6
            Du kannst soweit ich weiß mit der .htaccess bestimmte IP-Bereiche blockieren.
            In PHP mit der Referer-Domain zu arbeiten ist glaube ich nicht ganz zuverlässig.

            IP allerdings auch nur in gewissem Maße...
            Competence-Center -> Enjoy the Informatrix
            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

            Kommentar


            • #7
              ... und zum Dritten. Verkauft an "htaccess ist keine Lösung".
              Und warum sollte eine referer-Sperre in der index-Datei nicht zuverlässig sein? Ich gehe mal davon aus, dass sie sogar zuverlässiger ist als wenn sie in einer Datei steht, die in der root liegt. Und das Problem ist dann immer noch das ErrorDocument, welches im darüber liegenden Verzeichnis liegen muss, damit es gelesen werden kann.

              PhoenixAter

              Kommentar


              • #8
                Zitat von PhoenixAter Beitrag anzeigen
                Hallo zusammen
                Mit einer htaccess auf der root geht es zwar, aber für einen ganz bestimmten referer soll ein ErrorDocument aufgerufen werden. Inzwischen habe ich die verschiedensten Varianten ausprobiert und konnte dann selber nicht mehr auf meine Verzeichnisse zugreifen, bzw. ich bekam die entsprechende Error-Meldung. Da sich das Problem offensichtlich nicht mit htaccess-Dateien lösen lässt, suche ich nach einer Lösung mittels PHP den referer über die index-Dateien zu sperren und auf das entsprechende ErrorDocument zu leiten.
                PHP-Code:
                <?php
                function getSupportedHttpVersion$defaultVersion 'HTTP/1.0' )
                {
                   if ( isset( 
                $_SERVER'SERVER_PROTOCOL' ] ) )
                   {
                       
                // Getting the supported HTTP type from client, if its defined.
                       
                return $_SERVER'SERVER_PROTOCOL' ];
                   }
                   return 
                $defaultVersion;
                }

                if ( isset( 
                $_SERVER'HTTP_REFERER' ] )
                 && 
                $_SERVER'HTTP_REFERER' ] == 'http://example.org/bad-referer' )
                {
                   
                $httpVersion getSupportedHttpVersion();
                   
                header"{$httpVersion} 404 Not Found" );
                   
                readfile'/path/to/404.html' );
                   exit;
                }
                PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

                Kommentar


                • #9
                  Besten Dank Ulfikado. Leider funktioniert der Code, den Du vorschlägst so nicht, daher habe ich mir erlaubt ihn entsprechend zu modifizieren.
                  Heraus kommt dabei dann folgender Code, der exakt das macht, was er soll.
                  PHP-Code:
                  <?
                  if ( isset( $_SERVER[ 'HTTP_REFERER' ] )
                  && $_SERVER[ 'HTTP_REFERER' ] = 'http://example.org/bad-referer' )
                  {

                      readfile( '/path/to/404.html' );
                      exit;
                  }
                  ?>
                  Damit wäre das Thema dann erledigt.

                  Kommentar


                  • #10
                    Zitat von PhoenixAter Beitrag anzeigen
                    Besten Dank Ulfikado. Leider funktioniert der Code, den Du vorschlägst so nicht
                    Natürlich funktioniert der. Mögliche Fehlerquellen sind:

                    - Referer ist nicht der der Du glaubst (Schau halt rein was drin steht)
                    - Referer wird nicht gesetzt (Abhängig von Browser oder Proxies etc.)

                    PHP-Code:
                    if ( isset( $_SERVER'HTTP_REFERER' ] )
                    && 
                    $_SERVER'HTTP_REFERER' ] = 'http://example.org/bad-referer' )
                    {

                        
                    readfile'/path/to/404.html' );
                        exit;
                    }
                    ?> 
                    Falsch. Dein Code ist unbrauchbar. Du must den Header senden und Du willst keine Zuweisung (= ist ein Zuweisungsoperator) als Bedingung verwenden!

                    Gruß
                    PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

                    Kommentar


                    • #11
                      .....
                      Zitat von PhoenixAter Beitrag anzeigen
                      Damit wäre das Thema dann erledigt.

                      Kommentar


                      • #12
                        PHP-Code:
                        && $_SERVER'HTTP_REFERER' ] = 'http://example.org/bad-referer' 
                        Das ist aber schon angekommen, dass das immer true ergibt? Wie schon erwähnt, das einfache = ist eine Zuweisung und == ein Vergleich (=== auch).
                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          Zitat von PhoenixAter
                          Und warum sollte eine referer-Sperre in der index-Datei nicht zuverlässig sein?
                          Zitat von Ulfikado
                          - Referer ist nicht der der Du glaubst (Schau halt rein was drin steht)
                          - Referer wird nicht gesetzt (Abhängig von Browser oder Proxies etc.)
                          Competence-Center -> Enjoy the Informatrix
                          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                          Kommentar

                          Lädt...
                          X