0

コードは次のとおりです。

<script language="javascript">
<!--//
    function pasuser(form) {
        if (form.user.value=="JavaScript") { 
            if (form.pass.value=="Kit") {              
                location="page2.html" 
            } else {
                alert("Invalid Password")
            }
        } else {  
            alert("Invalid UserID")
       }
    }
//-->
</script>

パスワードではなくユーザー ID のみを使用しようとしていますが、form.pass を削除しても何も機能しません。フォームセクションで何か間違ったことをしていますか?

<input type="text" name="user" id="query" size="5" value=""> 
<input type="button" value="Search" onClick="pasuser(this.form)">

かなりカットアンドドライになりそうです。ユーザー ID だけを入力したい場合は、form.pass を削除するだけですが、うまくいきません。以前にこのスクリプトをユーザー ID とパスで使用したことがありますが、正常に動作します。

前もって感謝します。

4

3 に答える 3

1

パスワードチェックを削除したいようです。もしそうなら、あなたはこのようにそれを行うことができます:

<script language="javascript">
    function pasuser(form) {
        if (form.user.value=="JavaScript") { 
            location="page2.html"; 
        } else {  
            alert("Invalid UserID");
       }
    }
</script>

ステートメントの最後にもセミコロンを付けることをお勧めします。

于 2012-04-25T19:38:54.327 に答える
0

onclick="pasuser(this.form)"間違っている場合は訂正してください。ただし、パス入力フィールドを削除するときに、ユーザーID入力フィールドにビットを追加しなかった可能性がありますか?ここでは、jsfiddleを設定すると役立ちます。

とにかく、私が解決できる限り、pasuser関数をjfriend00のソリューションに変更onclickし、useridフィールドにビットを追加してこれを機能させます

于 2012-04-25T19:42:20.770 に答える
0

「うまくいかない」ということは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>
于 2012-04-25T19:45:33.147 に答える