.htaccessでブラウザの種類によるアクセス可否の設定をしていたのですが、悪いアクセスだと判断した場合、その都度追加で対応してきて問題なくアクセス拒否ができていました。
ですが、最近、アクセス可否の設定をしていたのがきいていないようになったので、何かミスがあったのだと思い.htaccessの設定を見直してみました。
ブラウザ毎に追加する設定(例:Firefox)
下にある3つの書き方それぞれアクセス拒否(403)表示になります。
※私の環境で検証してうまくいった書き方です。
① ()の前に\を入れます。
SetEnvIf User-Agent “Mozilla/5.0 ¥(Windows NT 5.1; rv:18.0¥) Gecko/20100101 Firefox/18.0” deny_ua
② ^を最初に、$を最後に入れます。
SetEnvIf User-Agent “^Mozilla/5.0 ¥(Windows NT 5.1; rv:18.0¥) Gecko/20100101 Firefox/18.0$” deny_ua
③ ().の前に\を入れます。
SetEnvIf User-Agent “^Mozilla/5¥.0 &¥(Windows NT 5¥.1; rv:18¥.0¥) Gecko/20100101 Firefox/18¥.0$” deny_ua
()の前にそれぞれ¥を挿入しない場合は、アクセス拒否が働きません。
.の前に¥を入れなくてもアクセス拒否が機能します。
()のどちらか一方の前に¥を挿入し忘れると500エラーになります。
¥を挿入しない場合、アクセス設定が機能しません。
因みに.htaccessでアクセス拒否を書くとこうなります。
SetEnvIf User-Agent “Mozilla/5.0 ¥(Windows NT 5.1; rv:18.0¥) Gecko/20100101 Firefox/18.0” deny_ua
order allow,deny
allow from all
deny from env=deny_ua
IEのアクセス設定
一つ一つ追加で設定するもの面倒なのでシンプルに設定
①単純にIE8のアクセスを拒否するには、下記の設定
SetEnvIf User-Agent “MSIE 8.0” deny_ua
②バージョンをまとめて設定(IE3から7まで拒否の例)
[34567]また[3-7]ハイフンどちらも有効に機能します。
SetEnvIf User-Agent “MSIE [34567]” deny_ua
SetEnvIf User-Agent “MSIE [3-7]” deny_ua
アクセス拒否の設定例
SetEnvIf User-Agent “MSIE [3-7]” deny_ua
order allow,deny
allow from all
deny from env=deny_ua
コメント