3

パブリックにアクセスできる Web アプリケーションがあります。ユーザーがログインすると、彼は自分の個人情報を入力します。

問題 ユーザーがキオスクまたは共有環境でブラウザを閉じるのを忘れる可能性があり、他のユーザーが自分の個人情報を見ることができる可能性があります。

5 分のセッション タイムアウトを使用しています。

私の考え ユーザーに尋ねることができるキオスク環境用の別のアプリを構築する方が良いですか?これは共有コンピューターですか、それともパブリックですか? はいの場合、どうすればさらに実装できますか?

非アクティブ状態が 3 分間続くたびに、ユーザーに「続行しますか?」というメッセージを表示します。はいの場合は、より安全にするために、パスワードの確認を取得します。

以下のリンクを見た ことがあります。公共のコンピューターまたはキオスクで使用される ASP.Net Web アプリケーションのセキュリティに関する考慮事項

この問題についてもっと考えを共有していただけますか: より安全にする方法.

4

1 に答える 1

1

何らかの JavaScript を使用する必要があります。サーバーには、クライアント側の何らかのスクリプト (明らかに JavaScript) を使用して要求を処理しないと、クライアント Web ページを更新する機能がありません。ポップアップメッセージを表示してセッションを維持したいかどうかをユーザーに尋ねて、同様のことをしました。しかし、あなたの場合、再ログイン用の DNN ページを作成し、ログインを確認したいすべてのページにカスタム モジュールまたは単純な JavaScript を含む HTML ブロックを追加する (またはテンプレートのヘッダーまたはフッターに配置する) 必要があるようです。これにより、ユーザーは再ログイン画面にリダイレクトされます。何かのようなもの:

function setHeartbeat() {
    setTimeout("heartbeat()", 300000); // every 5 min
}

function heartbeat() {
    window.location.href = "Relogin.aspx?LastPage=" + window.location.href;
}

次に、Relogin.aspx の上部に、ユーザーが 3 分間アイドル状態だったことを示すメッセージが表示され、パスワード ボックスが表示されます。ユーザーがログインした後、LastPage にリダイレクトできます (DNN を使用してからしばらく経ちましたが、URL をフォーマットして自動的にリダイレクトする方法があると思います)。

よりユーザー フレンドリーなオプションは、3 分後にポップアップを表示し、メッセージとパスワード フィールドに [OK] ボタンを表示することです。繰り返しますが、これは次のような jQuery で実行できます。

<div id="confirmSession" style="display: none">
<p class="message" style="display: none;"></p>
<p>You have been idle for 3 minutes, if you want to continue your session please re-enter your password.</p>
<p>Password: <input type="password" id="password" /></p>
<input type="button" id="btnContinueSession" />
<input type="hidden" id="userName" value='<%# HttpContext.Current.User.Principal.Identity %>' />
</div>

および次の JavaScript:

function setHeartbeat() {
    setTimeout("heartbeat()", 300000); // every 5 min
}

function heartbeat() {
    $("#confirmSession").show();
}

$("#btnContinueSession").click(function () {
    $.ajax({
    type: "post",
    url: "/relogin.aspx",

    error: function(returnval) {
        // Login failed for some reason, typically page not available 404 error, or code threw an error. so have the user try again.
        $(".message").text(returnval + " failure");
        $(".message").show();
    },
    success: function (returnval) {
        $("#confirmSession").hide();
        setHeartbeat();
    }
    });
});

ここで、relogin.aspx ページまたはユーザー名とパスワードを取得する他のサービスを作成し、ユーザーを再検証し、パスワードが無効な場合はエラーをスローする必要があります (上記の jQuery でキャッチされ、次のように表示されます)。ユーザー)。これは明らかにもう少し手間がかかり、単純にログイン画面にリダイレクトするのではなく、検証用のカスタム コーディングが必要になりますが、はるかにユーザー フレンドリーです。

この Ajax アプローチでは、サーバー セッションのタイムアウトを 3 分より長くする必要がある場合があることに注意してください。3 分以内にユーザーがパスワードを入力すると、ユーザーは既にサーバーからログアウトされており、無効な認証エラーが発生します。そのため、ログイン ページへの全体的なリダイレクトが最も理にかなっています。ただし、ユーザーがデータを入力した場合は、そのデータを Cookie などに保存して、再入力できるようにする必要があります (何百回もの人々がデータが「失われた」ことに不満を感じていると聞いています)。 」)。

私が取った例は次のとおりです。

于 2013-05-16T18:58:14.667 に答える