我想使用 session 在其中存储一个我需要很长时间的重要信息(不能延长 session 生命周期)。
但是 session 可能会过期:)
问题是如果用户坐下来做一些我在 session 中设置的值,如果他离开计算机并在几个小时后返回继续这个值将会丢失。
我的问题:
如果我将此值保存在 隐藏字段
而不是 session
中,它会永远存在吗(我的意思是页面打开时)?
附言
我没有时间测试(等待)这就是我问的原因:)
最佳答案
根据您的要求,您可以使用HiddenField
。但是,由于您将存储重要信息,因此请确保在将值分配给 HiddenField
之前对其进行加密。是的,这将长期存在。
您还可以尝试的一个相当不错的选择是将您的信息保存在 ViewState
中。它不会占用服务器上的任何内存,也不会强加任何任意
使用限制(例如超时)。此外,您还可以使用 Asp.Net 提供的内置加密功能
ViewState["UserSSN"] = 1;
if (ViewState["UserSSN"] != null)
{
_userSSN= (int)ViewState["UserSSN"];
}
如果您正在使用 ViewState
,您必须对其安全性采取对策。只需使用 ViewStateEncryptionMode
打开 View 状态加密Page指令的属性:
<%@Page ViewStateEncryptionMode="Always" ... %>
或者您可以在 web.config
文件中设置相同的属性:
<pages viewStateEncryptionMode="Always" />
它们不是防弹的,但它们会大大增加攻击者读取或修改 View 状态数据所需的工作量。
关于c# - 在长时间访问期间,隐藏字段是否比 session 更好地存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20065610/