【发布时间】:2010-09-22 23:05:34
【问题描述】:
有没有办法在 ASP Classic 中将页面设置为过期,以便用户无法回击并重新执行任何操作?
这是一个好习惯吗?
【问题讨论】:
标签: asp-classic
有没有办法在 ASP Classic 中将页面设置为过期,以便用户无法回击并重新执行任何操作?
这是一个好习惯吗?
【问题讨论】:
标签: asp-classic
如果你强制页面“过期”,它会产生你想要的相反效果:它实际上会强制浏览器再次发出请求(因为它被告知数据已经过期)
不过,我怀疑你可能在这里叫错了树。 “做事”的页面是否使用查询字符串值作为参数来执行这些操作?换句话说,链接到“操作”页面的页面是通过 URL 中带有查询字符串参数的常规锚标记,还是通过使用 GET 方法的表单?
如果是这样,您应该将提交该操作的表单更改为 POST 表单。如果用户使用“后退”或“刷新”按钮尝试重新加载该页面,这样做不仅会在浏览器中显示提示,还有助于保护您免受跨站点请求伪造攻击。 (更多关于 XSRF 的信息here)
【讨论】:
您要解决的问题是什么?如果后退按钮强制在服务器上更新某些内容,那么您最好确保不允许页面出现在可能导致问题的浏览器历史记录中。
在 POST 之后,我经常执行 Response.Redirect 以使 POST 不在浏览器历史记录中。这有助于避免这些类型的问题。
【讨论】: