嫌な閲覧者に付きまとわれているので、その人だけ弾きたいと思っています。
その人は大手のプロバイダでIPも毎回変動するので、ホストだけでは弾けません。
ですがちょっと少ないブラウザーを使っているようなので、ホストとUAを組み合わせた形でその人を絞り込んで弾こうと思ったのですが、記述の仕方が良く分かりません。
ホストだけの制限やUAのみの制限方法は分かってきたのですが…
二つ以上の条件を組み込んで制限するのは無理なのでしょうか。
具体例としては(例なので実際弾きたい人の情報とは違います)
・UAはcompatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0
・ホストはacca.tokyo.ocn.ne.jp
・Optionsは使えないので、それ以外の方法で
上記の条件に沿うような内容で、具体的に教えていただけると嬉しいです。
よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
SetEnvIf User-Agent "[^(compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)]" uanm
SetEnvIf Remote_Host "[^(acca.tokyo.ocn.ne.jp)]" hnnm
order deny,allow
deny from all
allow from env=uanm
allow from env=hnnm
ではいかがでしょうか?
ただ・・・User-Agentとして送られてくる値を簡単に変更できるツールがたくさんありますので
人相手にアクセス制限の条件にUser-Agentを入れるのはどうかと思います
(一部ブラウザではUser-Agentの値の変更機能が標準で搭載されています)。
アクセス制限されたとわかればすぐにUser-Agentを変更しかねませんしね。
意味は以下のとおりです。
# User-Agentがcompatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0でない場合uanmをセット
SetEnvIf User-Agent "[^(compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)]" uanm
# Hose Nameがacca.tokyo.ocn.ne.jpでない場合hnnmをセット
SetEnvIf Remote_Host "[^(acca.tokyo.ocn.ne.jp)]" hnnm
# 不許可定義を適用した後許可定義を適用する
order deny,allow
# 全てのアクセスを不許可にする
deny from all
# uanmがセットされていれば許可
allow from env=uanm
# hnnmがセットされていれば不許可
allow from env=hnnm
重ね重ねありがとうございます。
UA偽装については存じておりますし、私自身もタブブラウザで少々いじって使ってますので、そこは覚悟の上です。
ご心配ありがとうございます。
さて、早速記述していただいたもので試してみたのですが、500エラーが出てしまいました…
が、良いヒントを頂けたのでもう少し試行錯誤してみます。
ありがとうございました!
No.1
- 回答日時:
order allow,deny
allow from all
deny from acca.tokyo.ocn.ne.jp
ではいかがでしょうか。
order allow,deny
意味:許可定義の後に不許可定義の順番で定義を適用する
allow from all
意味:全てのアクセスを許可する
deny from acca.tokyo.ocn.ne.jp
意味:ホスト名がacca.tokyo.ocn.ne.jpのアクセスを不許可にする
です。
order allow,denyをorder deny,allowにすると不許可にした後許可定義でオーバーライドされてしまうので全てがアクセスできてしまいます。
この回答への補足
ありがとうございます。
ですが、これではacca.tokyo.ocn.ne.jpの人全てが弾かれてしまいますよね?
それでは困るんです。
ホストがacca.tokyo.ocn.ne.jpで、尚且つ
UAがcompatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0の
以上の2つの条件を満たした人だけを弾きたいのです。
流石にこのホストは利用者が多すぎるので、今は辛うじてUAで対策していまして、
SetEnvIf User-Agent "compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0" deny_ua
Order allow,deny
allow from all
deny from env=deny_ua
で凌いでいます。
しかしこのUAも他ホストで多少利用者がいるので、巻き添えで弾かれている人が出てくる可能性も…
やはり複数条件を組み合わせて弾きたいと思うのです。
引き続きお力を貸していただけると助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 exitの使い方
-
Excel-vba 文字列と変数を...
-
VB6.0-整数と余りを求める
-
数字の位ごとの値を表示するプ...
-
フォームを開くときに、コンボ...
-
フリーランタイマーの時間差分...
-
VBA コンボボックスの値をスピ...
-
1つ前の値を変数に保存する方法
-
VBAで配列のNULL判定
-
VBAのチェックボックス結果を集...
-
DataGridView 複数行同時変更...
-
関数で複数の値を戻り値として...
-
何種類の値があるかを調べる方...
-
UWSCのcallについて
-
VBからストアドの動的SQLを呼ん...
-
COLUMN(1:1)の意味を教え...
-
エラーの意味は? Lvalue req...
-
[VBS]変数を定数に変換する方法...
-
エクセルへのデータの貼付時に...
-
配列の値を置換するにはどうす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
足して100になるような乱数のア...
-
VB6.0-整数と余りを求める
-
Excel-vba 文字列と変数を...
-
C#で動的にコントロールを取得...
-
DWORDって
-
DataGridView 複数行同時変更...
-
VBAで配列のNULL判定
-
ラジオボタンの値の取得につい...
-
4択問題のプログラムでランダム...
-
VBAの定数の使い方で、計算値を...
-
数字の位ごとの値を表示するプ...
-
VBA コンボボックスの値をスピ...
-
C言語でCLAMP(a,b,c)
-
1つ前の値を変数に保存する方法
-
世界のナベアツ
-
データ構造のmapとは?
-
10進数をアスキーコードに変換
-
【C++/CLI】String型文字列の位...
おすすめ情報