JavaScriptで簡単なログイン/パスワード認証を行います。
ちょっと応用すれば、 ログインが成功したら隠しページへ飛ばしたり、なんていう使い方ができます。
あくまで簡易的なものです。 .htaccess や CGI等 が使えるサーバなら、そっちを使ったほうがいいに決まってます。
隠しページには特に認証を行ってないので、 (だってJSで認証かけてもJS切ればおかまいなしだし) もし何らかの事故でファイルのアドレスがばれた場合は、 誰でも難なく見られるので注意です。
たまにファイルのアドレスを変えるのも有効かもしれません。 (ユーザーのログイン/パスワードは変える必要もないですし)
隠しページに飛ばすだけなら、 パスワードを MD5暗号化 してチェックする必要はないかもしれません。 (404 not found がでるだけだし)
ID | Password | MD5-Password | DES-Text |
---|---|---|---|
Foo | hoge | ea703e7aa1efda0064eaa507d9e8ab7e | 008689BDB0EDF5097BF0BB9BC6594A932ECC1529CCA1A9A8 |
Bar | hage | f39ec629f4a1b04dd16e543e22e8d630 | 93B3731D8A6B31AF696D4E5DB02259E092BBB7C183870AF8 |
Baz | hige | c162121c938884fdc11cba6180fabfd2 | AC57446BDFB4EF56C4F92F2CEDBB7C95071D7F927AB9EE9E |
※IDとPasswordはユーザーが任意に決定できます。
※試しに
login に "Foo" ,
password に "hoge" とか "mage" とか
入れてみてください。
※成功すると、"secret/index.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>
JSファイル
md5.js, des.js
は、どちらも、
Izumo
>>
高度な JavaScript 技集
>
md5.js
からダウンロードしてきます。
これらのファイルの中身は変えてはいけません。
login.js (「対象をファイルに保存」でダウンロードしてください)
このファイルの中身を実際に変えて作っていきます。
login.js の中を参考にしてください。
そのユーザーの ログインID(login) と MD5で暗号化したパスワード(pass) と DESで暗号化したファイルパス(text) を 管理者が自分で手動で追加します。
login/pass/text list を書くために
passをMD5暗号化、
textをDES暗号化するには、
alert( MD5_hexhash('任意のパスワード') );
alert( des_escape( des_cbc_encrypt('任意のパスワード', '任意のファイルパス') ) );
ってやればいいのですが、
いちいち面倒な場合は、
このページ下のフォームからどうぞ。
function login_from_form
の下方)これより下は、 自分のやりたいことを自分で書いてください。
デフォルトでは、
ログインが失敗したら "Login failed."、
ログインが成功したら、
DES暗号化された
text を複合化(解読)した文字列
(例えば"secret/index.html")、
がアラートで表示されるようになってます。
もし隠しページに飛ばしたいときは、最下部の、
alert(text);
の代わりに、
location.href = text;
と書けばいいだけです。