#!/usr/bin/perl #┌───────────────────────────────── #│ LOG IN v1.5 (2002/06/06) #│ Copyright(C) Kent Web 2002 #│ webmaster@kent-web.com #│ https://www.kent-web.com/ #└───────────────────────────────── $ver = 'Login v1.5'; #┌───────────────────────────────── #│ [注意事項] #│ 1. このスクリプトはフリーソフトです。このスクリプトを使用した #│ いかなる損害に対して作者は一切の責任を負いません。 #│ 2. 設置に関する質問はサポート掲示板にお願いいたします。 #│ 直接メールによる質問は一切お受けいたしておりません。 #│ 3. methodプロパティ は POST 専用です #└───────────────────────────────── # 【 設置例 】 # # public_html / index.html (トップページ等) # | # +-- cgi-bin / login.cgi [755] # secret.cgi [644] ... 隠しファイル # (HTMLの拡張子を.cgi に変更) # #============# # 設定項目 # #============# # パスワード(半角英数字) $pass = 'rumin100'; # スクリプト名 $script = "./rumin.cgi"; # 隠しファイル(HTMLの拡張子を .cgi に変える) # 例 → secret.html だと secret.cgi に変更 # もし隠しファイルが本来のCGIファイルであれば、https://からURLを指定 $secret = './rummin.cgi'; # 認証ページからの戻り先 (index.htmlなど) $home = "../index.htm"; # bodyタグ $body = ''; #============# # 設定完了 # #============# # デコード処理 if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); } foreach (split(/&/, $buf)) { local($key, $val) = split(/=/); $val =~ tr/+/ /; $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # セキュリティ対策 $val =~ s/&/&/g; $val =~ s/"/"/g; $val =~ s//>/g; $val =~ s/\0//g; $in{$key} = $val; } if ($in{'pass'} ne "") { &login; } # 認証画面を表示 &header; print <<"EOM"; [戻る]
- パスワードを入力し認証ボタンを押してください -
PASSWORD



- -
EOM exit; #------------# # 認証処理 # #------------# sub login { # 認証エラー表示 if ($in{'pass'} ne $pass) { &header; print "

認証エラー

\n"; print "認証画面に戻って再度パスワードを入力して下さい\n"; print "
\n"; print "
\n\n"; exit; } # ファイル指定が https://からであれば Locaionヘッダでジャンプ if ($secret =~ /^http\:\/\//) { if ($ENV{'PERLXS'} eq "PerlIS") { print "HTTP/1.0 302 Temporary Redirection\r\n"; print "Content-type: text/html\n"; } print "Location: $secret\n\n"; } else { # 隠しファイルを表示 unless (-e $secret) { &error("隠しファイルのパスが不正です : $secret"); } print "Content-type: text/html\n\n"; open(IN,"$secret") || &error("Open Error : $secret"); while () { print; } close(IN); } exit; } #--------------# # エラー処理 # #--------------# sub error { &header; print "

ERROR !

\n"; print "$_[0]\n"; exit; } #--------------# # HTMLヘッダ # #--------------# sub header { print "Content-type: text/html\n\n"; print "\n\n"; print "\n"; print "認証\n"; print "$body\n"; }