トップページ | 利用規定
  CGIでパスワード制限2

カレッヂ
カレッヂ



特徴

作成したHTMLまたはテキストを表示する前に、パスワード認証を行うプログラムです。 「CGIでパスワード制限」では、認証後に表示する内容そのものをWWWから見えない場所に置けない限り、 URLを発見されてしまうと見られてしまいます。最近のビッグローブやインフォウェブ等は、 WWWから見えない場所にディレクトリやファイルを作成できないようなので、 表示する内容をプログラム内に隠してしまうしかありません。 v2.00よりログ機能をつけました。


サンプルとダウンロード

- サンプル
crypt.cgi (パスワードセットを作成するツール)
sample.cgi (このシステムを組み込んだ例)
log.cgi (ログを表示するプログラム)



備考

上記のサンプルはsample.cgiですが、ファイル名は何でもOKです。 ただし、CGIスクリプトですので、CGIが実行できる拡張子に限られます。 大抵のサーバでは、CGIスクリプトは*.cgiにするように指定されているようです。

.htaccess設定ファイルで、CGIとして実行する拡張子を指定できる場合は、

AddType application/x-httpd-cgi .cgi
AddType application/x-httpd-cgi .chtml

と設定すれば、sample.chtmlでCGIとして実行されます。 ここで*.chtmlとしたのは、SSIが実行できるHTMLとして、*.shtmlにすることが慣例であることからです。 勿論、他と合致しなければ何でもOKです。

スクリプト中に、アクセスするためのIDとパスワードを設定します。 複数のIDとパスワードの組み合わせが指定できます。 この組み合わせを「パスワードセット」と呼ぶことにします。 このパスワードセットは、作成ツールであるcrypt.cgiで作成します。

実際に表示する内容は、HTML(通常、*.htmlや*.htmで保存する内容) またはテキスト(一般的に、*.txtで保存する内容)に限定されています。 実際の内容は、__END__よりも後ろに書きます。 逆に言うと、例えば今あるHTMLファイルの冒頭に、sample.cgiの1行目から__END__までを書き足し、 ファイル名を変更することで、パスワードを入力しないと表示できないようにできます。


コラム

暗号化されたパスワードが13文字で$マークから始まっていない場合はDES暗号です。 その場合、パスワード(平文)は8文字以内です。少なくとも6文字以上は設定すべきです。

DES暗号は1977年にアメリカ商務省標準局がデータ暗号化規格を公募したときにIBMから提出された方式に 修正が加えられたもので、UNIX などでは最もポピュラーな暗号方式です。

DESは、データを64ビット長のブロックに分割し、各ブロックを56ビット長の鍵で暗号化する共通暗号鍵アルゴリズムです。 パスワードが8文字までしか有効ではないのは、DESの鍵が56ビットだからです。以前は40ビット以下しか輸出できませんでした。

標準DES暗号crypt()は、出力の最初の2文字をsalt として使用します。strの最初の8文字を使用するだけです。 このため、同じsaltを使用した場合、同じ8文字から始まるより長い文字列について同じ結果が生成されます。

これを2重3重に繰り返すことで強度を高める場合もあります。 これ以外に、MD5などの暗号がサーバに実装されていればもっと強度が高い暗号を 使うこともできますが、汎用プログラムとして、UNIXに標準についているDESを 利用しています。

DES暗号を復号する方法はないとされていますが、実際は手間と時間をかければ 解読可能です。特に簡単な文字の組み合わせは危険です。もちろんこれらは 暗号化された文字列が入手できている場合で、当スクリプトでは CGIプログラムの中に暗号結果を含めていますので、その分は多少は安全です。

暗号が破られていない場合でも、パスワードを知っているヒトが誰かに流せば、 それは破られたものと同じですし、いずれにしても、定期的または任意に変更することが、 より安全な管理方法のひとつです。


Powered by CGI RESCUE(R)