2008-11-21
■[開発メモ]サーバー上のファイルに開発した後からアクセス制限をかける方法
サーバー上のファイルに対して、クライアントからのアクセス制限をかける場合、
埋め込まないといけません。
制約条件とか
通常は、クライアントにアクセス権限判断用のプログラムを呼び出す
URLを公開して、ファイル自体は直接アクセスできない場所に置くはずです。
流れで言うと
クライアント → アクセス制御プログラム呼び出し → 判定 → ファイル読み出し
です。
でも、一度運用開始したあとになると、一度公開したURLは変えられません。
なので、別の方法を検討しました。
また、静的なパスワード設定なら.htpasswdによるBASIC認証をすれば
いいだけです。
今回はxoopsの認証機能と連携したいので、別の方法を使いました。
方針
Apacheのmod_rewriteを使って、ファイルアクセスを無理やり
イメージだけで書くと
の流れを
に変えました。
認証プログラムの準備
そのまま使いました。なので、あまり解説することはないです。
checker.php
というファイルを用意しておきました。
たとえば、file#.xmlというファイルにアクセス制御をかける場合(#はデータのID)
URLをchecker.php?id=10としてアクセスすると、file10.xmlのコンテンツへの
アクセス判定をして、OKのときだけファイルを出力するだけのプログラムです。
<?php include XOOPS_URL.'/mainfile.php'; # データのID読み込み if(isset($_GET['id'])){ $myid=intval($_GET['id']); }else{ exit; } # xoopsのユーザIDをチェック if(is_object($xoopsUser)) { $uid = $xoopsUser->getVar('uid'); } else { $uid = 0; } # アクセス権限OKならファイル読み込み if(check_access_file($myid, $uid)){ $fname="./file".$id.".xml"; $type="Content-type: text/xml"; header($type); readfile($fname); } function check_access_file($myid, $uid){ # チェックプログラムをここに書く return true; } ?>
ブログ用に書き起こしたので、間違ってるかも・・・。
.htaccessの準備
RewriteEngine on RewriteRule ^file([0-9]+).xml+ checker.php?id=$1
ちなみに、データのIDは数字前提で書いてます。
この2つのファイルを置くだけで、アクセス権限を追加できました。
思ったよりカンタン!でした。
余談1
来週末から国際会議で発表する予定でして、
その準備で最近なかなか時間が取れないです。
今日も必死に原稿丸覚えしてます・・・。
余談2
先日、本のモニタープレゼント企画をやったのですが、、、色々大変です。
サイト運営のモチベーションをガツンと下げられました
- 7 http://www.pressarmy.com
- 3 http://www.google.com/search?num=100&hl=ja&safe=off&client=opera&rls=ja&hs=TZB&q=Linux+ユーザ+登録+Web&btnG=検索&lr=lang_ja
- 2 http://ezsch.ezweb.ne.jp/search/ezGoogleMain.php?query=ESCAPE+R3+ヤフー&start-index=4&adpage=3&mode=02
- 2 http://mixi.jp/show_friend.pl?id=4708153
- 1 http://72.14.235.132/search?q=cache:nlT4N6zkIMwJ:www.rottel.net/kuwa/29636+exif+PHP+編集&hl=ja&ct=clnk&cd=1&gl=jp&lr=lang_ja&client=firefox-a
- 1 http://ameblo.jp/nakano-neko/bookmark.html
- 1 http://blog-search.yahoo.co.jp/search?ei=UTF-8&p=escape+R3&n=10&so=dd&merge=on&tflg=none&sq=M&b=4
- 1 http://blogs.yahoo.co.jp/yjmapstaff/45567304.html
- 1 http://blogsearch.google.co.jp/blogsearch?hl=ja&ie=UTF-8&q=行きたい旅行の記念写真&btnG=ブログ検索&lr=lang_ja
- 1 http://d.hatena.ne.jp/diarylist?of=100&mode=rss&type=public


