htaccessでブラウザIEのアクセス拒否設定(User Agentを参考)

.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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です