web-dev-qa-db-ja.com

クエリ文字列のhumans.txtの.htaccess書き換えルールとは何ですか?

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>

サイトに.htaccess全体を配置したい。

それは実際に何をしますか?

2
user4951

そのコードは、ボットがクエリ文字列を介してhumans.txtをプローブするのを停止するために開発されたようです。

  • ブロックされていません:http://example.com/humans.txt
  • ブロック済み:http://example.com/?some_path=http://www.google.com/humans.txt?

Humans.txtのブロックに関する多くのオンラインガイドに加えて、何が何をするのかを説明する多くのWebサイトがあります。貼り付けた不良ロボットリストをブロックするこれらのルールの多くは、古いか役に立たないものです。厄介なボットは、独自のユーザーエージェントを使用して自分自身を発表しません。また、.htaccessのサイズを大きくすると、サイトの速度がわずかに低下する可能性があり、ボットをブロックすることでさえ、防止できないリクエストとして帯域幅を使用します。

一般に、多くの人が.htaccessファイル内で多くの時間を費やしているのを見る一方で、多くの場合、ファイルのアクセス許可など、他の場所でセキュリティ監査を行うのが最善です。

2
Simon Hayter

この行:

<IfModule mod_rewrite.c>

Mod_rewriteがApacheにインストールされているかどうかを確認し、インストールされていない場合は上記の行と...

</IfModule>

無視されます。

この行:

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

uRLに疑問符の直後にhttp://www.google.com/humans.txtが含まれているかどうかを確認し、大文字小文字は関係ありません(NCのため)。一致する場合、次の行が実行されます...

RewriteRule .* - [F,L]

つまり、URLが次のようなものである場合:

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

F,LフラグからのFと、要求が.*の正規表現と一致するため、ユーザーはアクセスを拒否されます。

Apacheは、表示されているこれらのルールを処理するときにファイルをスキャンしません。そのURLはおそらくハッカーが発明したものです。

私があなたなら、リンクをわかりやすいURL(クエリ文字列が添付されていないURL)に切り替えて、URLのどこかにHTTP://を挿入しようとする人をリダイレクトすることですこれらのルールを介したページ:

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