4

我有一个应用程序,无需身份验证即可在公共场所的计算机上使用。这是一个简单的四页应用程序,允许用户申请结婚证。一些办公室将有一个公共电脑亭,申请人可以在前往书记员之前填写自己的信息。他们也可以在访问办公室之前在家里这样做。我应该采取哪些注意事项来确保用户无法访问前一个用户的输入?某些表格数据将包含敏感信息,例如 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

4 回答 4

1

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

上次我研究服务器端无缓存标头的有效性时,我意识到任何使用定制的、有问题的或不常见的浏览器的人都可能不接受不缓存文档的请求。

您可能还希望在某些页面(例如会话结束页面)和历史导航威慑上添加 javascript 后退按钮断路器,但不是所有页面,因为没有人喜欢后退按钮被破坏。

于 2010-08-02T21:02:28.013 回答
0

你在这里:开发人员在构建公共网站之前应该知道什么

于 2010-08-02T20:25:43.690 回答
0

我认为你的想法是正确的。在“完成/提交”上结束会话是我推荐的。仍然阅读owasp 前 10 名并牢记您通常的漏洞。

1)确保您使用HTTPS。

2) 在推出之前始终始终测试您的应用程序是否存在漏洞。我推荐使用Wapiti(免费)、Acunetix ($) 或 NTOSpider($$$$)。

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

于 2010-08-02T20:30:31.603 回答
0

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

于 2012-04-13T04:50:16.513 回答