Index |
HOME > プログラムTOP > JavaScript |
||||||
パスワード制限
JavaScript の実用的なTips集です。ここでは、パスワードによるページ保護を扱います。ただし、JavaScriptではソースからファイル名をたどってダウンロードすることが可能ですので、厳密なパスワード認証は困難です。その場合は、サーバー側のプログラム(PHP, Perl, Ruby など)で対応する必要があります。
sasaraan programming ![]() Exposition ■ダイアログ認証
入力ダイアログを開いて、ユーザーにパスワードの入力を求める方法です。入力ダイアログを開くには、window オブジェクトの prompt メソッドを使います。このメソッドは、キャンセル時は null を、OK時はユーザーの入力文字列を返します。この時、パスワードは、別ファイルに記述して、HTML側で取り込むようにします。ただし、外部ファイルは、拡張子が .js のテキスト形式である必要があります。
// password.js JavaScriptソース
var strPW = "guest";
function CheckPrompt() {
var strRes = prompt("パスワードを入力してください", "");
if (strRes != null) {
// キャンセル(null)でないときのみ処理
if (strRes == strPW) {
// パスワード確認
location.href = "jssamp/menu_pg1.html";
} else {
// パスワード否認
alert("パスワードが違います!");
}
}
}
<!-- HTMLソース -->
<head>
...
<script type="text/javascript" src="password.js"></script>
...
</head>
<body>
...
<form name="Form2" style="margin:1ex">
<input type='button' value='パスワード確認' onclick='CheckPrompt()'>
</form>
...
</body>
■フォーム認証
ダイアログを使わず、入力用フォームを利用することもできます。この時、別に入力用のHTMLファイルをつくって対応することが多いようです。また、入力用には Password オブジェクトを利用すると、入力文字を隠蔽することができます。下記の例では、パスワードやチェック用のスクリプトは、やはり別ファイルにしています。// password.js JavaScriptソース
var strPW = "guest";
function CheckPW(pw) {
if (pw == strPW) {
location.href = "Page1.html";
} else {
alert("パスワードが違います!");
}
}
<!-- HTMLソース -->
<head>
...
<script type="text/javascript" src="password.js"></script>
...
</head>
<body>
...
<form name="Form2" style="margin:1ex">
パスワード : <input type="password" name="PW2" size="12">
<input type="button" value="確認" onclick="CheckPW(document.Form2.PW2.value)">
</form>
...
</body>
■パスワードの保護
JavaScript では、ユーザーがソースを調べ、パスワードを見ることができます。ファイルを別にしてもダウンロードして見ることができてしまいます。一般に、JavaScript でパスワードを完全に保護するには、パスワードにリンク先のパスの一部(主にファイル名)をそのまま使用します。例えば、移動先のファイル名が "Page1.html" だとすれば、"Page1" がパスワードとなります。
下記のサンプルでは、ファイル名をパスワードにしています。ただし、パスワードが間違いの場合は、既定のエラーページ(「ページを表示できません」)に移動してしまいます。 // password.js JavaScriptソース
function PWCheck(pw) {
location.href = "jssamp/" + pw + ".html";
}
<!-- HTMLソース -->
<head>
...
<script type="text/javascript" src="password.js"></script>
...
</head>
<body>
...
<form name='Form3' style='margin:1ex'>
パスワード : <input type='password' name='PW3' size='12' >
<input type='button' value='確認' onclick='CheckWord(document.Form3.PW3.value)'>
.... 'menu_pg1' と入力するとページが移動します。
</form>
...
</body>
なお、この方法だと、ユーザーごとに中継用のHTMLファイル(本命のページに移動させるだけのページ)を用意すれば、ユーザー別パスワードにも対応することができます。しかし、ファイル数がかさむと管理が大変ですので、この場合もサーバー側のプログラムで対応した方が良いでしょう。
|
|||||||
www.sasaraan.net |
(c) morijoh |