web-dev-qa-db-fra.com

Qu'est-ce que la règle de réécriture .htaccess pour human.txt dans la chaîne de requête?

De 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>

Je veux mettre le .htaccess entier sur mon site.

Que fait-il réellement?

2
user4951

Il semble que ce code ait été développé pour empêcher les robots de sonder humans.txt via des chaînes de requête.

  • Non bloqué: http://example.com/humans.txt
  • Bloqué: http://example.com/?some_path=http://www.google.com/humans.txt?

Il existe de nombreux guides en ligne sur le blocage de l'humain.txt, ainsi que sur de nombreux sites Web expliquant ce qui fait quoi. Beaucoup de ces règles de la liste des robots bloqués que vous avez collée sont soit anciennes, soit simplement inutiles. Les méchants bots ne s'annoncent pas avec leur propre agent utilisateur unqine. Et augmenter la taille de votre .htaccess peut ralentir légèrement votre site et même bloquer des bots utilise la bande passante en tant que requête impossible à empêcher.

Je vois généralement beaucoup de gens passer beaucoup de temps dans les fichiers .htaccess alors que dans de nombreux cas, ils préfèrent passer à des audits de sécurité ailleurs, comme les autorisations de fichiers, etc.

2
Simon Hayter

Cette ligne:

<IfModule mod_rewrite.c>

Vérifie si mod_rewrite est installé dans Apache et si ce n'est pas le cas, rien entre la ligne ci-dessus et ...

</IfModule>

est ignoré.

Cette ligne:

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

vérifie si l'URL contient http://www.google.com/humans.txt juste après le point d'interrogation et si le casse n'a pas d'importance (à cause de NC). S'il y a correspondance, la ligne suivante est exécutée ...

RewriteRule .* - [F,L]

Ce qui signifie que si l'URL ressemble à quelque chose comme:

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

Ensuite, l'accès est refusé à l'utilisateur en raison de la variable F de l'indicateur F,L et de la requête correspondant à l'expression régulière de .*, ce qui signifie qu'elle ne correspond à aucun nombre de fois.

Apache n'analyse même pas les fichiers lorsqu'il traite les règles que vous affichez. Cette URL est probablement quelque chose qu'un pirate informatique a inventé.

Ce que je ferais si j’étais vous-même, c’est de basculer vos liens vers des URL conviviales (des URL ne contenant pas de chaîne de requête attachée) et de rediriger toute personne essayant d’injecter un HTTP:// n'importe où dans l’URL en échec. page via ces règles:

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