3

我们有一个可公开访问的 Web 应用程序。当用户登录时,他会填写他的个人详细信息。

问题 用户可能会忘记在信息亭或共享环境中关闭浏览器,从而可能让其他用户看到他的个人信息。

我们使用 5 分钟的会话超时,

我的想法 为 Kiosks 环境构建一个单独的应用程序是否更好,我可以在其中询问用户这是共享计算机还是公共计算机。如果是,我将如何进一步实施?

对于每 3 分钟不活动,我们要提示用户:“您要继续吗?” 如果是,请确认密码,以使其更安全。

我已经看到下面的链接 安全注意事项将在公共计算机或信息亭上使用的 ASP.Net Web 应用程序

您能否就这个问题分享更多想法:如何使其更安全。

4

1 回答 1

1

您将不得不使用某种 JavaScript。如果没有某种客户端脚本(显然是 JavaScript)来处理请求,服务器就无法更新客户端网页。我做过类似的事情,询问用户是否想通过显示弹出消息来保持会话活跃。但在您的情况下,您似乎应该创建一个用于重新登录的 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 分钟。如果在三分钟或更短的时间内,用户输入了他们的密码,他们将已经从服务器中注销,并且您将收到一个无效的身份验证错误。所以整体重定向到登录页面可能是最有意义的。但是您需要确保如果用户输入了您将其保存在 cookie 中或以某种方式保存的数据,以便您可以重新填充它(我听说过数百人对他们的数据“丢失”感到沮丧”)。

我取的例子是:

于 2013-05-16T18:58:14.667 回答