.htaccessで特定のIPのみアクセス許可する方法(携帯の固体識別番号対応)

.htaccessはいろんなことが出来るので、全部の説明は参考サイトを見てください。

で、意外と情報のない、完全プライベート用に.htaccessを設定する方法を解説。
これは自分用の日誌をwikiで設置するために必要となったもの。
ローカルにすればいいんだけど、そうしなかった理由は「外出先でも使いたいから」。

以下、サンプル。

order deny,allow
deny from all
allow from 123.456.789.000 #このIPからのアクセスを許可する

軽く解説。
1行目で、アクセス拒否か許可かの優先順位を決めている。
“deny,allow”で拒否を許可より優先、つまり、基本拒否である、ってことを指示している。
なので、2行目にはアクセス拒否から書いている。”all”から拒否、つまりどこからもアクセス拒否しますよ、ということ。
3行目で逆に許可のIPを指示。IPの前方一致とかドメインでの指定とかは参考サイトを参照。

これで基本的にはこのIPからのリクエストのみ受け付けるようになった。
次に外出先で使えるように携帯に対応する。
まずは携帯の固体識別番号を取得する。

僕はauなので、環境変数HTTP_X_UP_SUBNOに端末ごとにユニークな文字列が入る。
取得のための簡単なphpスクリプトは以下。







このプログラムに携帯からアクセス。そうすると”0000000000000_xx.ezweb.ne.jp”のような固体識別番号が表示される。
この文字列は別に見られてマズイものでもないけど、悪用を防ぐためチェックしたらphpのプログラムは削除しておくのがいいと思う。

で、上記の環境変数を送りながらアクセスしてくる端末を許可するための.htaccessの書き方は以下。

SetEnvIfNoCase X-Up-Subno “0000000000000_xx.ezweb.ne.jp” ok
allow from env=ok #特定の携帯からのアクセスを許可する

“SetEnvIfNoCase”で”SetEnvIfNoCase”という環境変数を取得した上、
それが”0000000000000_xx.ezweb.ne.jp”ならば”ok”を返すという設定。
この値が”ok”なものを2行目でアクセス許可している。

よって完成した.htaccessは以下のとおり。

SetEnvIfNoCase X-Up-Subno “0000000000000_xx.ezweb.ne.jp” ok
order deny,allow
deny from all
allow from 123.456.789.000 #このIPからのアクセスを許可する
allow from env=ok #特定の携帯からのアクセスを許可する

これで一応完璧に動作している。
激しく使い道の限られた.htaccessの記述だけど、条件の合う方は是非。

カテゴリー: 日記的内容   パーマリンク

.htaccessで特定のIPのみアクセス許可する方法(携帯の固体識別番号対応) への1件のコメント

  1. 木下真美 より:

    個別識別番号許可をしたい

コメントをどうぞ

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>