Asp.net 管理共享计算机和信息亭上的web应用程序安全
我们有一个可公开访问的web应用程序。 当用户登录时,他会填写个人详细信息 问题 用户可能忘记在信息亭或共享环境中关闭浏览器,这可能会让其他用户看到他的个人信息 我们使用的会话超时为5分钟 我的想法 为Kiosks环境构建一个单独的应用程序更好吗?在这个环境中,我可以问用户这是一台共享计算机还是一台公共计算机。如果是,我将如何进一步实施 对于每3分钟的不活动,我们希望提示用户:“是否要继续?”如果是,请确认密码,以使其更安全 我已经看到了下面的链接Asp.net 管理共享计算机和信息亭上的web应用程序安全,asp.net,Asp.net,我们有一个可公开访问的web应用程序。 当用户登录时,他会填写个人详细信息 问题 用户可能忘记在信息亭或共享环境中关闭浏览器,这可能会让其他用户看到他的个人信息 我们使用的会话超时为5分钟 我的想法 为Kiosks环境构建一个单独的应用程序更好吗?在这个环境中,我可以问用户这是一台共享计算机还是一台公共计算机。如果是,我将如何进一步实施 对于每3分钟的不活动,我们希望提示用户:“是否要继续?”如果是,请确认密码,以使其更安全 我已经看到了下面的链接 您能否就这个问题分享更多想法:如何使它更安全
您能否就这个问题分享更多想法:如何使它更安全。您将不得不使用某种JavaScript。如果没有某种客户端脚本(显然是JavaScript)来处理请求,服务器就无法更新客户端网页。我也做过类似的事情,询问用户是否希望通过显示弹出消息来保持会话的活动状态。但在您的情况下,似乎应该创建一个用于重新登录的DNN页面,并在每个页面中添加一个自定义模块或HTML块,其中包含一个简单的JavaScript,以检查登录(或将其放入模板页眉或页脚),从而将用户重定向到重新登录屏幕。比如:
function setHeartbeat() {
setTimeout("heartbeat()", 300000); // every 5 min
}
function heartbeat() {
window.location.href = "Relogin.aspx?LastPage=" + window.location.href;
}
<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>
然后Relogin.aspx将在顶部显示一条消息,说明用户已空闲3分钟,并提供密码框。用户登录后,您可以将其重定向回LastPage(自从我使用DNN以来,它一直是一个Hfile,但我认为有一种方法可以格式化URL,使其自动重定向)
一个更为用户友好的选项是在3分钟后显示一个弹出窗口,用OK按钮显示消息和密码字段。同样,这可以通过jQuery来完成,其中您有:
function setHeartbeat() {
setTimeout("heartbeat()", 300000); // every 5 min
}
function heartbeat() {
window.location.href = "Relogin.aspx?LastPage=" + window.location.href;
}
<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>
在这里,您必须创建一个relogin.aspx页面或一些其他服务,这些服务将接收用户名和密码,重新验证用户,然后如果密码无效(在上面的jQuery中捕获并显示给用户),则抛出一个错误。这显然需要更多的工作,并且需要为验证定制编码,而不是简单地重定向到登录屏幕,但它对用户更加友好
在这种Ajax方法中,值得注意的是,服务器会话超时可能必须超过3分钟。如果时间是三分钟或更短,并且用户输入了密码,则他们将已经从服务器注销,您将得到一个无效的身份验证错误。因此,整体重定向到登录页面可能最有意义。但您需要确保,如果用户输入了数据,您可以将其保存在cookie中或以某种方式保存,这样您就可以重新填充数据(我已经听说数百次有人因为数据“丢失”而感到沮丧)
我举的例子有: