Ankündigung

Einklappen
Keine Ankündigung bisher.

Require/Rewrite in .htaccess (Apache): Wie Bedingung, die greift, ausgeben?

Einklappen

Neue Werbung 2019

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

  • Require/Rewrite in .htaccess (Apache): Wie Bedingung, die greift, ausgeben?

    Hallo zusammen,

    über die .htaccess-Datei blockiere ich diverse Clients (z.B. Spambots) abhängig von verschiedenen Kriterien wie IP-Adresse (mit Require) oder Useragent (mit Rewrite).

    Seltener kommen False Positives vor, also User, die eigentlich nicht geblockt werden sollen. Diese melden sich dann per E-Mail, und ich erhalte von diesen dann nur deren IP-Adresse, nicht aber Useragent des Browsers usw. Falls die IP-Adresse nicht in der Blocklist steht, ist es daher dann angesichts verschiedener weiterer Bedingungen ohne die Browserkennung schwierig festzustellen, warum genau ein konkreter Client geblockt wird.

    Gibt es eine Möglichkeit, die konkrete Zeile im .htaccess mit der greifenden Bedingungen auszugeben?

  • #2
    Für die Zugriffe gibt es doch ein Access-Log, z.B. im Apache.
    Um festzustellen, wer geblockt wird, könntest du ja alle vermeintlich unerwünschten Zugriffe auf eine andere Seite umleiten und dann das Logfile auswerten.
    Über die .htaccess kannst du auch nach bestimmte User-Agents erkennen:
    https://stackoverflow.com/questions/...fic-user-agent
    Ich würde aber zunächst alles nicht erwünschte auf eine Not-Allowed-Seite o.ä. umleiten und dann später über die reklamierte IP-Adresse den User-Agent im Logfile suchen.

    Kommentar


    • #3
      ee gibt eine haufen log möglichkeiten des loggens nei apache.

      https://httpd.apache.org/docs/2.4/logs.html

      iich nehme an, du willst das rewrite mit log_rewrite logen.
      wenn ich deine frage wörtlich nehme, nimm forensic:
      Each request is logged two times. The first time is before it's processed further (that is, after receiving the headers). The second log entry is written after the request processing at the same time where normal logging occurs.

      Kommentar


      • #4
        Wenn du bessere Infos von deinen Nutzern benötigst, dann hilf ihnen dabei.
        Leite vie p-bieling schon sagte auf eine andere Seite um, aber sag dort nicht nur "Du kommst hier nicht rein" sondern generiere direkt eine Ausgabe mit allen von dir benötigten Infos, und bitte darum, diese einfach copy & paste in ihre Support-Anfrage einzufügen. Dann musst du auch nicht tonnenweise Logs durchsuchen.

        Kommentar


        • #5
          Danke reddighamburg! So habe ich es nun umgesetzt, d.h. ein geblockter User bekommt in der 403-Fehlermeldung zugleich auch seine IP-Adresse und seinen Useragent angezeigt, mit der Bitte, sich damit zu melden, damit das Problem dann mit diesen Angaben behoben werden kann.

          Habe die 403-Seite übrigens nicht als eigene Datei angelegt, sondern direkt in der .htaccess-Datei integriert. Im action-String von ErrorDocument funktionieren %{REMOTE_ADDR} und %{HTTP_USER_AGENT} problemlos und werden dem User dann mit angezeigt.

          Kommentar


          • #6
            Kannst Du der geneigten Leserschaft ein gut funktionierendes Beispiel hier posten?

            Kommentar


            • #7
              Hallo zusammen,

              hier ein gekürzter Beispiel-Code, zu platzieren zu Beginn der .htaccess:
              Code:
              ErrorDocument 403 '<!DOCTYPE HTML><html lang="de"><head><title>Fehler 403: Zugriff verweigert</title></head><body><h1>Fehler 403</h1><p>Zugriff verweigert</p><p>Bitte wenden Sie sich mit den folgenden Angaben per E-Mail an uns:</p><p>Ihre IP-Adresse: %{REMOTE_ADDR}<br>Ihr Browser: %{HTTP_USER_AGENT}</p></body></html>'
              Dann im Anschluss z.B. mit Require oder Rewrite und entsprechenden Bedingungen ein Forbidden/Fehler 403 erzeugen, dann wird der obige Code als HTML-Seite im Browser angezeigt.

              Integriert man die 403-Fehlerseite wie hier direkt im .htaccess, funktioniert im Code kein PHP. Die oben verwendeten %{...}-Variablen, wie sonst auch in der .htaccess verwendbar, funktionieren aber.

              Kommentar

              Lädt...
              X