将在公共计算机或自助服务终端上使用的ASP.Net Web应用程序的安全注意事项

时间:2010-08-02 20:23:01

标签: asp.net security caching kiosk

我有一个可以在公共场所的计算机上无需身份验证的情况下使用的应用程序。这是一个简单的四页应用程序,允许用户申请结婚许可证。一些办公室将有一个公共电脑亭,申请人可以在前往办事员之前填写自己的信息。在访问办公室之前,他们也可以在家里这样做。我应该考虑哪些因素来确保用户无法访问之前用户的输入?某些表单数据将包含敏感信息,如DOB,SSN和母亲的娘家姓名。

1。禁用自动完成功能

到目前为止,我已在主页面表单标记中设置了autocomplete = false。

<form id="frmMain" runat="server" autocomplete="false">

2。禁用页面缓存

我也能够在IE和FF中禁用页面缓存,但在Safari和Chrome中无法执行此操作。有人知道这个伎俩吗?点击后退按钮仍会在Safari和Chrome中显示表单填充的数据。

// Disables page-caching in IE
Response.Cache.SetAllowResponseInBrowserHistory(false);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Expires = 0;

// HACK: fixes Firefoxes cache issue
Response.AddHeader("ETag", new Random().Next(1111111, 9999999).ToString());

第3。管理会话

我还在每个页面上实现了一个计时器,它会在n分钟后终止会话。会话保存当前应用程序ID,页面用于加载先前输入的数据。他们可以通过点击按钮获得更多时间。当计时器启动时,它会重定向回主页面,我在Page_Load中终止会话。当用户单击“完成/提交”按钮时,我也会重定向到此页面。会话被终止后,通过URL导航到页面将永远不会加载以前的应用程序。它将被视为一个新的。

protected void Page_Load(object sender, EventArgs e)
{
   if (!IsPostBack)
     Session.Abandon();
}

4。我该怎么办?

Your awesome suggestions/tips here

4 个答案:

答案 0 :(得分:1)

由于这是一个Kiosk应用程序,因此您需要确保将浏览器配置为遵循不缓存任何内容的请求。

上次我研究了服务器端无缓存标头的有效性时,我意识到任何使用自定义,错误或不常见浏览器的人都可能不会要求不缓存文件。

您可能还想在某些页面上添加javascript后退按钮断路器(例如会话页面的一些末尾)和历史导航威慑,但不是所有页面都因为没有人像后退按钮那样被打破。

答案 1 :(得分:0)

答案 2 :(得分:0)

我认为你有正确的想法。在“完成/提交”中杀死会话就是我推荐的内容。仍然阅读owasp top 10并记住您常见的漏洞。

1)确保使用HTTPS。

2)在推出之前,始终始终对应用程序的漏洞进行测试。我建议使用Wapiti(免费),Acunetix($)或NTOSpider($$$$)。

3)让您的服务器保持最新状态,确保运行OpenVAS以确保您的服务器安全。

答案 3 :(得分:0)

使用JavaScript。您必须捕获并阻止每个表单的submit事件,获取数据,通过ajax提交,然后使用表单的本机reset()方法。从那里你可以导航到别处或显示验证错误,具体取决于ajax结果。使用jQuery很容易。