gpt4 book ai didi

asp.net - 管理共享计算机和信息亭上的 Web 应用程序安全

转载 作者:行者123 更新时间:2023-12-02 03:46:56 26 4
gpt4 key购买 nike

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

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

我们使用 5 分钟的 session 超时,

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

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

我看到了下面的链接 Security considerations for an ASP.Net web application that will be used on a public computer or kiosk

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

最佳答案

您将不得不使用某种 JavaScript。如果没有某种客户端脚本(显然是 JavaScript)来处理请求,服务器将无法更新客户端网页。我做过类似的事情,询问用户是否想通过显示弹出消息来保持 session 事件。但在您的情况下,您似乎应该创建一个 DNN 页面以重新登录,并向每个要检查登录的页面添加一个自定义模块或带有简单 JavaScript 的 HTML block (或将其放在模板页眉或页脚中)它将用户重定向到重新登录屏幕。像这样的东西:

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 方法中,值得注意的是您的服务器 session 超时可能必须超过 3 分钟。如果在三分钟或更短的时间内,用户输入了他们的密码,他们将已经从服务器注销,并且您将收到无效的身份验证错误。因此,整体重定向到登录页面可能最有意义。但是你要确保如果用户输入了数据,你将其保存在 cookie 中或以某种方式保存,这样你就可以重新填充它(我听过数百次人们对他们的数据“丢失”感到沮丧").

我的例子是:

关于asp.net - 管理共享计算机和信息亭上的 Web 应用程序安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16433360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com