JavaScript で Login/Password


Page-Guide
Contents-Bookmark
About
このツールについて。
Know-How
このツールの仕組み。
Attention
このツールの注意。
Sample
このツールのサンプル。
Source
このツールを使う際のソースの書き方。
Crypt-Form
暗号化フォーム。

Table of Contents

About

JavaScriptで簡単なログイン/パスワード認証を行います。

ちょっと応用すれば、 ログインが成功したら隠しページへ飛ばしたり、なんていう使い方ができます。

あくまで簡易的なものです。 .htaccess や CGI等 が使えるサーバなら、そっちを使ったほうがいいに決まってます。


仕組み

  1. まず、ユーザーに、好きなログインIDとパスワードを決めてもらいます。
    ログインIDは何でもいいですが、パスワードは半角英数8文字までです。
  2. 次に、管理者が、そのユーザーのパスワードを使って、 そのパスワードと、 ある隠したいテキスト(隠しページのアドレスとか) の2つの文字列を暗号化します。
  3. で、そのユーザのログインIDと、暗号化したパスワードと、暗号化したテキストを、 JavaScriptファイルの中にデータとして記録します。
    (暗号化した文字列は、完全に破られない、ということはありませんが、 そうそう容易くは破られないはず)
  4. 次回からは、 そのユーザーが、最初に決めたログインIDとパスワードを入れて認証チェックします。
    認証に成功すると、晴れて素のテキストが取得できます。 (隠しページに行けるようになったりします)

隠しページにするときの注意

隠しページには特に認証を行ってないので、 (だってJSで認証かけてもJS切ればおかまいなしだし) もし何らかの事故でファイルのアドレスがばれた場合は、 誰でも難なく見られるので注意です。

たまにファイルのアドレスを変えるのも有効かもしれません。 (ユーザーのログイン/パスワードは変える必要もないですし)

隠しページに飛ばすだけなら、 パスワードを MD5暗号化 してチェックする必要はないかもしれません。 (404 not found がでるだけだし)


サンプル

ユーザーごとの ログイン/パスワード/テキスト の表

ユーザーごとの ID/パスワード と、 パスワードのMD5暗号化後の値、 "secret/index.html" のDES暗号化後の値
ID Password MD5-Password DES-Text
Foo hoge ea703e7aa1efda0064eaa507d9e8ab7e 008689BDB0EDF5097BF0BB9BC6594A932ECC1529CCA1A9A8
Bar hage f39ec629f4a1b04dd16e543e22e8d630 93B3731D8A6B31AF696D4E5DB02259E092BBB7C183870AF8
Baz hige c162121c938884fdc11cba6180fabfd2 AC57446BDFB4EF56C4F92F2CEDBB7C95071D7F927AB9EE9E

※IDとPasswordはユーザーが任意に決定できます。


ログインできるかどうかテスト

login-form
login
password

※試しに login に "Foo" , password に "hoge" とか "mage" とか 入れてみてください。
※成功すると、"secret/index.html" とアラートがでます。


ソースの書き方

HTMLソース

<script type="text/javascript" src="md5.js"></script>
<script type="text/javascript" src="des.js"></script>
<script type="text/javascript" src="login.js"></script>
<form action="" method="get">
    <dl>
        <dt>login</dt>
        <dd><input type="text" name="login" value="" /></dd>
        <dt>password</dt>
        <dd><input type="password" name="pass" value="" /></dd>
    </dl>
    <div class="submit">
        <input type="button" value="login ?" onclick="login_from_form(this.form)" />
    </div>
</form>
	

HTMLソースの説明

md5.js, des.js (HTML 1-2行目)

JSファイル md5.js, des.js は、どちらも、
Izumo >> 高度な JavaScript 技集 > md5.js
からダウンロードしてきます。

これらのファイルの中身は変えてはいけません。

login.js (HTML 3行目)

login.js (「対象をファイルに保存」でダウンロードしてください)

このファイルの中身を実際に変えて作っていきます。


JavaScriptソース (login.js)

login.js の中を参考にしてください。


JavaScriptソースの説明 (login.js)

login/pass/text list (login.js 1行目)

そのユーザーの ログインID(login)MD5で暗号化したパスワード(pass)DESで暗号化したファイルパス(text) を 管理者が自分で手動で追加します。

パスワードのMD5暗号化、ファイルパスのDES暗号化

login/pass/text list を書くために passをMD5暗号化、 textをDES暗号化するには、
alert( MD5_hexhash('任意のパスワード') );
alert( des_escape( des_cbc_encrypt('任意のパスワード', '任意のファイルパス') ) );
ってやればいいのですが、 いちいち面倒な場合は、 このページ下のフォームからどうぞ。

// your process .. (function login_from_form の下方)

これより下は、 自分のやりたいことを自分で書いてください。

デフォルトでは、 ログインが失敗したら "Login failed."
ログインが成功したら、 DES暗号化された text を複合化(解読)した文字列 (例えば"secret/index.html")、 がアラートで表示されるようになってます。

もし隠しページに飛ばしたいときは、最下部の、
alert(text);
の代わりに、
location.href = text;
と書けばいいだけです。


暗号化フォーム

このフォームで、 MD5DES による簡単な暗号化を行うことが出来ます。

input passwordMD5暗号化したいパスワード を、
input textDES暗号化したいテキスト を、
それぞれ書いて、crypt? ボタンを押してください。

get MD5-password and DES-text
input password
input text
MD5-password
DES-string

※試しに input password に "hoge" , input text に "secret/index.html" とか入れてみてください。
※そうすると、 MD5-password に "ea703e7aa1efda0064eaa507d9e8ab7e" , DES-string に "008689BDB0EDF5097BF0BB9BC6594A932ECC1529CCA1A9A8" とか出るはずです。


Page-Information
First
2005.08.16