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