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

Asp.net 管理共享计算机和信息亭上的web应用程序安全,asp.net,Asp.net,我们有一个可公开访问的web应用程序。 当用户登录时,他会填写个人详细信息 问题 用户可能忘记在信息亭或共享环境中关闭浏览器,这可能会让其他用户看到他的个人信息 我们使用的会话超时为5分钟 我的想法 为Kiosks环境构建一个单独的应用程序更好吗?在这个环境中,我可以问用户这是一台共享计算机还是一台公共计算机。如果是,我将如何进一步实施 对于每3分钟的不活动,我们希望提示用户:“是否要继续?”如果是,请确认密码,以使其更安全 我已经看到了下面的链接 您能否就这个问题分享更多想法:如何使它更安全

我们有一个可公开访问的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中或以某种方式保存,这样您就可以重新填充数据(我已经听说数百次有人因为数据“丢失”而感到沮丧)

我举的例子有:


我已编辑了您的标题。请看,“,共识是“不,他们不应该”。@JohnSaunders:我需要你的:)我认为这个问题不适合这样做。这并不是一个具体的编程问题,而是一个模糊的设计建议调查。看起来您真正需要的是更详细地敲定安全需求。关注如何实现这些需求,并询问在实现过程中遇到的问题。使用远程web软件很难解决这个问题。您是否能够自行设计或控制信息亭?如果没有,您是否能够影响信息亭服务员的培训和实践?Matthew,,我将更准确地说明我的问题,我们正在使用DotnetNuke,在每个页面上,如果有任何活动,我希望在大约3分钟内向用户显示警报,并重定向到确认密码页面。我可以在JavaScript中实现它,还是可以在服务器端实现它。请提供任何参考资料。感谢您的宝贵意见,这对我很有帮助,还有一个问题是浏览器上的每一页返回按钮单击我必须创建一个自定义页面过期页面,我的疑问是我应该在哪里编写此代码,我应该在每个模块中编写,因为dotnetnuke没有母版页。在这个自定义页面上,我会有一个链接,将他重定向到登录页面。在信息亭中,我建议禁用右键菜单,并且根本不显示浏览器栏,这样此人就更难返回。话虽如此,我还是建议您使用jQuery插件,并将其放入每个页面上都包含的javascript文件中(因此,将javascript包含在顶部导航栏中,这样它就可以在网站上随处可见)。查看这篇StackOverflow文章,了解如何覆盖后退按钮的一些想法: