Luna-cryin' >> Laboratory > JavaScript & VBScript >

Script for web #001:超簡易パスワードロックちっく+α(w


機能説明



簡単なパスワードロックシステム。
パスワードを入力しそれが正しければパスワードをファイル名とするhtmlファイルに飛び
そのファイルからMETAタグを使いロックをかけたいページへと飛ばす。
入力文字がパスワードと一致しない場合は入力文字をファイル名とする
htmlファイルが存在しないためエラーページが表示されるシステムである。

同種のパスワードロックシステムにはパスワードを何らかの形でエンコードし解析しにくくして、
ページ表示時にデコードするものがある。
しかしこの場合エンコードされたものとはいえパスワードが「形」としてページのソース、
もしくは外部jsファイル内に残ってしまうため
解析しようという気になれば解析されてしまう可能性がある。

しかし、本システムはパスワードがそのままファイル名になっており、
ソース内にパスワードを残す必要がないため
上記のシステムと比較してセキュリティの面で優れているのが特徴。

お遊び的な要素としてパスワードを複数設定することも可能。
これによりちょっとしたクイズ形式のランダムパスワードを設定することができる。


(注)あくまで簡易的なロックでしかありません。
強固なセキュリティを求めるのならCGIや.htaccessでやってください。



Download

>> js001_pwlock.js

(version 2.1.0 - last update 2002/01/13)


設定

設置例

(パスワードを入力するページ、js001_pwlock.js、パスワードファイル格納ディレクトリpwfileを同じ階層に置くとき)


+-- hoge.html        (パスワードの入力を要求するページ)
│  
+-- js001_pwlock.js  (スクリプトファイル)
│  
│  (↓パスワードファイル格納ディレクトリ)
+-- pwfile/ --- + --- index.html     (セキュリティの関係で絶対必要)
                 + --- password_1.html(パスワードファイル。.htmlより前の部分がパスワードの答えになる。
                 + --- password_2.html パスワードファイルを置いた数だけパスワードの数を増やすことができる。)
                              :
                              :

スクリプトファイルjs001_pwlock.jsの設定

dir = "pwfile/";
パスワードファイル格納ディレクトリ名およびパス。相対、絶対のどちらでも可
必ずディレクトリ名のあとに"/"をつけること
num_pwd = 3;
質問の数。すなわちパスワードファイルの数
chk = 1;
送信時に文字数チェックをするかどうか。 1:する 0:しない

1だと入力文字の文字数とパスワードの文字数が違う場合ダイアログを表示。
パスワードは違うが文字数が一致する場合、エラーページへ飛ばす。
0だと入力文字がパスワードと違う場合すべてエラーページへと飛ばす
mondai[0] = "パスワードテスト。testって入力";     mojisuu[0] = 4;
配列mondai:質問
配列mojisuu:質問の答えの文字数、すなわちパスワードファイルから拡張子.htmlを除いた部分の文字数。

当然のことながらmondaiとmojisuuの配列、パスワードの対応は正確にすること。

なお、複数のパスワードを設定する場合、
各パスワードの文字数が一致しないようにパスワードを設定してください。

パスワードファイル(設置例のpassword_1.html,password_2.html...)の設定

パスワードとなる単語をファイル名とするhtmlファイルを作成する。

 例):パスワードが"test"ならtest.html

そしてその中身は

<SCRIPT language="JavaScript">
document.write("<META http-equiv=\"Refresh\" CONTENT=\"0;URL=ロックをかけたいページへのパス\">");
</SCRIPT>
<NOSCRIPT><META http-equiv="Refresh" content="0;URL=でたらめなURL"></NOSCRIPT>

としてMETAタグを使ってロックをかけたいページへと飛ばす。
なおJavaScriptがONになっていない場合は
でたらめな(存在しない)URLへと飛ばしてはじきます。

パスワードが複数ある場合はその分だけhtmlファイルを作成する

その他注意事項

  • パスワードファイルを格納するディレクトリ内には必ずindex.htmlファイルを置いてください。
    index.htmlを置かない場合、サーバーの仕様によってはディレクトリに直接アクセスした際
    そのディレクトリ内にあるファイルが丸見えになることがあるので注意してください。
  • js001_pwlock.jsやパスワードファイル格納ディレクトリの場所を変更する場合は各自該当部分のパスの設定を変えてください。


更新履歴

Ver 2.1.0(2002/01/13)
  • pwdchk関数を大幅変更
  • 文字数が一致しないときに表示されるダイアログを確認ダイアログに変更して処理を選択できるようにした
  • 関数内の変数を極力ローカルにしてみた
  • スクリプトを見やすくした
  • バージョン表記を変更
Ver 2.0(2001/07/13)
  • Netscape Navigatorでこのスクリプトが動かなかった原因がようやくわかる。
    よってその部分を修正。
  • ソースの整理
  • 関数pwdchk()の簡略化
  • 入力フォームのtypeをtextからpasswordに変更
  • パスワードファイルの中身を大幅変更。
    JavaScriptOFFでファイルに直ってきたヤツを存在しないページに飛ばす機能追加。
  • 説明書(このファイル)をちゃんと作ってみる
    が、いまいちわかりづらい。。(;´Д`)
Ver 1.0(2001/05/05)
  • とりあえず作ってみた。
  • Netscape Navigator(Mozilla)で動作確認してみるとちゃんと動作しないことが発覚(汗


動作確認

OS : Microsoft Windows 2000 professional sp2
Browser : Microsoft Internet Explorer 5.01 sp2 / Mozilla 0.9.5


問題点

ロックをかけたいページに直接リンクを張られると終了
・・・仕様です(ぉ
cookie使えばもう少しセキュリティ強化できるかも
でもこれ以上のセキュリティ強化を望むならCGIでやってくらさい。
パスワードに日本語などの2バイト文字や"_"と"-"以外の記号が使えない
・・・ムチャ言わないでくださいw
パスワードファイルを増やすたびセキュリティが甘くなる親切設計(おぃ
・・・セキュリティを重視する場合はパスワードを一つにしてください
パスワードを複数設定するのはあくまでお遊び機能です。
パスワードの答えでおなじ文字数のものが複数あるとき、
パスワードを入力するページが表示されたときにでるヒント(質問)の答えではなく、
その答えと同じ文字数のパスを入力するとパスが通っちゃうヽ(´ー`)ノ
・・・仕様です(またかよオイ
パスワードを複数設定するときはそれぞれのパスワードの文字数が一致しないように設定してください。


今後の予定

終了(ぇー


雑記

(編集途中)


楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル