Perl Script Laboratory

Auto Password v0.41d

注意事項

ディレクトリ構成について

このシステムは、特定のディレクトリに対して、パスワードファイルに登録されていないユーザーのアクセスを制限するためのものであるため、ディレクトリ構成が複雑になっています。上記の構成例ではどういう点を留意しているかを以下に示します。

パスワードファイルを置くディレクトリ

パスワードファイル(auto_pass.txt)、ユーザーデータ等の格納用ディレクトリ(data) が Web 上から URL を指定して見られないようにするために、、ドキュメントルート(public_htmlやhtdocs)の下に置かないようにする必要があります。FTP アクセスのみを許可しているプロバイダの中には、自分の Web 用のドキュメントルートより上のディレクトリにアクセスできない場合があります。その場合には、Web 上から見える位置に上記ファイルを置くしかありませんが、その場合のセキュリティは脆弱になることをあらかじめご承知置きください。"deny from all" と書いた .htaccessファイルをdataディレクトリに置くことで、ユーザーデータファイルを直接見ることができなくなります。

登録用スクリプトを置くディレクトリ

登録用プログラム(auto_pass_reg.cgi)は誰もがアクセスできるディレクトリに置く必要があります。

その他のプログラムを置くディレクトリ

管理用プログラム(auto_pass_admin.cgi)、登録変更/削除用プログラム(auto_pass_chg.cgi、 auto_pass_del.cgi)は登録したメンバーのみがアクセスできるディレクトリ(.htaccessを置いたディレクトリの下)に置く必要があります。

@NIFTY など、プログラムを設置する場所と、通常のhtmlコンテンツを置く場所を明確に分けなければならないサーバ環境では、現行のシステムを使うことはできません。このシステムでは、制限をかけるディレクトリ内にプログラムを置くことを前提としているからです。しかしながら、プログラムを置く場所と、コンテンツを置く場所にそれぞれ同一の .htaccess ファイルを設置することで、システムが機能する場合があります(設定例(3))。

ログインIDについて

ログインIDは、8文字以内の半角英小文字(a-z)および数字(0-9)のみが使用できます。登録時に英大文字を入力しても小文字に変換されます。また、同一のIDを重複して登録できません。

パスワードの文字数について

パスワードの自動生成時には、環境設定の(6)の「パスワードの文字数」にしたがってパスワードが生成されますが、この数字を9以上にすると、システムが正常に機能しませんのでご注意ください。また、パスワード変更や管理用画面でのユーザー登録時に指定できるパスワードも、8文字を超えて入力できないようにmaxlength 属性を使って制限をかけていますが、これを改造して取り除いて9文字以上のパスワードを登録しても、サーバによっては9文字目以降を無視する場合がありますのでご注意ください。

cf. abcdefghijkabcdefghijklmnabcdefgh と見なされる など

テンプレートファイル(tmpl/*.html)について

v0.4よりhtml部分をプログラムと分離させて、テンプレートファイルを新たに作りました。テンプレートファイル内にはプログラムによって値に置き換えるための特別な記号(##*****##という文字列)があらかじめ設定されています。

スタイルシートの部分は、各テンプレートファイルの##style##と指定された部分に、__style.htmlの中身がそのまま埋め込まれます。スタイルシートは適宜変更してお使いください。文字色・背景色などのbodyタグオプションは、設定ファイルの(8)で指定可能です。

これらの文字列のうち、##footer##という文字列は、必ず含まれていなければなりません。この文字列が含まれていない場合はエラーとなります。また、この文字列と置き換えるための文字列を指定してあるプログラム内のソースコードは変更しないでください。クレジット表示をなくして運用したい場合は、著作権表示の削除をしたい方へをお読みください。

全登録データを削除するには

全登録データを削除するには、空のcsvファイルをデータディレクトリにFTPでアップロードし、「CSVデータの取り込み」(「既存のデータと入れ替える」にチェックを入れる)を実施してください。

暗号化方式について(DESとMD5)

パスワードの暗号化(encrypt)は、DESおよびMD5のどちらの方法でも処理できるようになりました。どちらを使うかは設定ファイルで選択可能です。

perlのcrypt()関数からMD5のライブラリを利用できない場合は、この方法ではご利用になれません。

接続元ホスト名と異なるアドレスの登録拒否機能について

接続元ホスト名(環境変数REMOTE_HOST)に含まれるドメイン名と登録しようとするメールアドレスのドメイン名が一致しないとき登録を拒否する機能を追加しました(設定ファイル(7-3))。

環境変数 REMOTE_ADDR から逆引きができる場合

  • .**.jpドメイン (第2レベルドメインが2文字)… *****.**.jp(第3レベルまで)
  • ****.jpドメイン (第3レベルドメインが3文字以上)… ****.jp(第2レベルまで)
  • ****.***ドメイン (gTLD=トップレベルドメインが3文字以上)…****.***(第2レベルまで)

をホスト名から抽出し、この文字列がメールアドレスと後方一致する場合のみ登録を許可します。ただし、bbtec.net(ヤフーBB)については、これに対応するアドレスとしてybb.ne.jpのみを許可します

環境変数 REMOTE_ADDR から逆引きができない場合

常に登録を許可しません。