2012年3月22日木曜日

.htaccessによる認証

.htaccessでパスワードかIPどちらかの認証を満たしていれば許可する



.htaccessで「Satisfy Any」を指定すると、どちらかの認証を通ればいい設定となる。デフォルトは「Satisfy All」で、両方の認証を必要とする。

下記は"192.100.100"ネットワークからのアクセスは許可、それ以外はBasic認証を必要としている。

order deny,allow
deny from all
allow from 192.100.100

AuthType Basic
AuthName "pas"
AuthUserFile /home/user/pas/.htpasswd
require valid-user
Satisfy Any



携帯電話で個体識別情報(AGENT)による認証


携帯電話には、個体を識別するための情報がある。これを利用して.htaccessでアクセス制御を行うことが可能だ。
PHPなどで、正規表現などを利用しUSER AGENTの中から個体識別情報を抽出することができる。

au携帯の固有ID(サブスクライバー ID)


auには、EZ番号(サブスクライバID)と呼ばれる29桁のユニークID番号がある。

//PHPでのサブスクライバIDを取得
$id = $_SERVER['HTTP_X_UP_SUBNO'];



ドコモとソフトバンク携帯の個体識別番号


ドコモとソフトバンク携帯の個体識別番号15桁のユニークIDがある。

//PHPでの個体識別番号を取得
preg_match("/^.+ser([0-9a-zA-Z]+).*$/", $useragent, $match);
$id = $match[1];



au携帯で固有ID(サブスクライバー ID)による認証の例



SetEnvIf X-UP-SUBNO ^05012345678901_ag\.ezweb\.ne\.jp$ mobilephone
SetEnvIf X-UP-SUBNO ^05012345678902_ae\.ezweb\.ne\.jp$ mobilephone
Order Deny,Allow
Deny from all
Allow from env=mobilephone
Allow from 192.100.100


上記は2つのサブスクライバーIDと"192.100.100"ネットワークからのアクセスのみ可能。
実用には、さらに各キャリアのIPアドレス帯域を使用して、指定キャリア以外からはアクセスできないようにする。
au のIPアドレス帯域
docomo(iモード)のIPアドレス帯域
ソフトバンクのIPアドレス帯域

0 件のコメント: