webentwicklung-frage-antwort-db.com.de

Was ist die .htaccess-Umschreiberegel für "humans.txt" in der Abfragezeichenfolge?

Von http://www.allthingsdemocrat.com/block-bad-bots-in-htaccess.txt :

<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} http\:\/\/www\.google\.com\/humans\.txt\? [NC]
RewriteRule .* - [F,L]
</IfModule>

Ich möchte den gesamten .htaccess auf meiner Site platzieren.

Was macht es eigentlich?

2
user4951

Es sieht so aus, als ob dieser Code entwickelt wurde, um Bots daran zu hindern, humans.txt über Abfragezeichenfolgen zu untersuchen.

  • Nicht blockiert: http://example.com/humans.txt
  • Gesperrt: http://example.com/?some_path=http://www.google.com/humans.txt?

Es gibt viele Online-Anleitungen zum Blockieren von "humans.txt" und viele Websites, auf denen erklärt wird, was zu tun ist. Viele dieser Regeln in der von Ihnen eingefügten Liste "Block Bad Robots" sind entweder alt oder einfach unbrauchbar. Böse Bots melden sich nicht mit ihrem eigenen User-Agent an. Wenn Sie die Größe Ihres .htaccess erhöhen, kann dies Ihre Website etwas verlangsamen, und selbst das Blockieren von Bots verwendet Bandbreite als Anforderung, die nicht verhindert werden kann.

Ich sehe im Allgemeinen eine Menge Leute, die viel Zeit in .htaccess-Dateien verbringen, während es in vielen Fällen am besten ist, Sicherheitsüberprüfungen durchzuführen, bei denen es sich um Dateiberechtigungen usw. handelt.

2
Simon Hayter

Diese Linie:

<IfModule mod_rewrite.c>

Überprüft, ob mod_rewrite in Apache installiert ist und ob zwischen der obigen Zeile und ...

</IfModule>

wird ignoriert.

Diese Linie:

RewriteCond %{QUERY_STRING} http\:\/\/www\.google\.com\/humans\.txt\? [NC]

prüft, ob die URL direkt nach dem Fragezeichen http://www.google.com/humans.txt enthält und die Schreibweise keine Rolle spielt (wegen NC). Wenn es eine Übereinstimmung gibt, wird die nächste Zeile ausgeführt ...

RewriteRule .* - [F,L]

Das heißt, wenn die URL ungefähr so ​​lautet:

http://example.com/a/b/cde.asp?http://www.google.com/humans.txt

Dann wird dem Benutzer der Zugriff verweigert, weil F vom F,L -Flag stammt und weil die Anforderung mit der Regex von .* übereinstimmt, was bedeutet, dass sie beliebig oft übereinstimmt.

Apache scannt nicht einmal nach Dateien, wenn es diese Regeln verarbeitet, die Sie anzeigen. Diese URL ist wahrscheinlich etwas, was ein Hacker erfunden hat.

Wenn ich Sie wäre, würde ich Ihre Links auf benutzerfreundliche URLs (URLs, die keine angehängte Abfragezeichenfolge enthalten) umstellen und jeden umleiten, der versucht, einen HTTP:// an einer beliebigen Stelle der URL in eine fehlgeschlagene zu injizieren Seite über diese Regeln:

<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} (.*)http\:\/\/(.*) [NC]
RewriteRule .* - [F,L]
</IfModule>
0
Mike