「うまくいかない」ということはlocation=page2.html
、URLの変更に失敗したことを意味すると思います。を使用する必要がありますwindow.location=page2.html
。を使用している可能性もあります<input type=submit>
- 代わりにボタンを使用してみてください。私がテストして問題なく動作するコードは一番下にありますが、最初に、対処すべき他の問題がいくつかあります。
問題 1: クライアント側のセキュリティ
最初の問題は、クライアント側のセキュリティがあることです。コードは JavaScript です。つまり、ブラウザーで実行されます (別の状況で JavaScript インタープリターという非常にまれなケースでない限り)。これは、ソース コードがエンド ユーザーに配信されることを意味します。エンド ユーザーは、ブラウザーに組み込まれている [ソースの表示] を使用して、ユーザー名とパスワードを明らかにすることができます。ちなみに、ソースの表示を無効にするようなトリックは機能しません。ブラウザーは JavaScript を無効にする (そのトリックを無効にする)、wget を使用する、プロキシ サーバー (webscarab など) を使用する、またはブラウザー アドオンを使用することができます。ユーザーはいつでもページのソースにアクセスできます。
問題 2: 保護されていない「安全な」page2.html
認証後に移動する 2 番目のページは保護されていない可能性があります。結局のところ、ユーザー名とパスワードを要求し、「安全な」ページにリダイレクトするだけです。ユーザーが「安全な」ページに直接アクセスするのを妨げているのは何ですか?
問題 3: ハードコードされた資格情報 ハードコードされ
た資格情報のリストがあります。これは、あなたのソフトウェアを使用するすべての人が同じ認証情報を持つことを意味します。異なるユーザーは、たとえ権限がなくても、互いのインストールにログインできます。これは、実際の製品では重大なリスクと見なされることがよくあります。
推奨事項
セキュリティについて考え、認証スキームを実装しようとしているのは良いことです。これに興味がある場合は、ウィキペディアから始めて、たくさんの研究があります。また、owasp.org を参照して、セキュリティがどのように悪化するかについての多くの優れた情報を確認してください。また、OWASP の Web goat ツールを試してみる必要があります。これにより、さまざまな悪影響を及ぼす要素を学習する実践的な経験が得られます。
コード
<HTML>
<頭></頭>
<本体>
<script language="javascript">
<!--//
関数パスユーザー(フォーム){
if (form.user.value=="JavaScript") {
if (form.pass.value=="キット") {
アラート(「成功」);
window.location = "http://www.google.com/";
} そうしないと {
alert("無効なパスワード")
}
} そうしないと {
alert("無効なユーザーID")
}
}
//-->
</script>
<フォーム名=f>
<input name=user value="JavaScript">
<input name=pass value="Kit">
<input type=button onclick='pasuser(document.forms.f)'>
</body>