我有一个无需身份验证即可在公共场所的计算机上使用的应用程序。这是一个简单的四页应用程序,允许用户申请结婚证。一些办公室将设有公共电脑亭,申请人可以在前往柜台前填写自己的信息。他们也可以在去办公室之前在家中这样做。我应该考虑哪些因素来确保用户无法访问前一个用户的输入?某些表单数据将包含敏感信息,例如出生日期、社会安全号码和母亲婚前姓名。
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,页面使用该 ID 加载先前输入的数据。他们可以通过单击按钮获得更多时间。当计时器到时,它会重定向回主页,我在主页中终止 Page_Load 中的会话。当用户单击“完成/提交”按钮时,我也会重定向到此页面。一旦会话被终止,通过 URL 导航到页面将永远不会加载以前的应用程序。它将被视为新的。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
Session.Abandon();
}
4.我还应该做什么?
Your awesome suggestions/tips here