c# - 在长时间访问期间,隐藏字段是否比 session 更好地存储值

标签 c# asp.net session hidden-field

我想使用 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/

相关文章:

javascript - ExtJS 组合框有时隐藏在灰色的窗口后面

javascript - 从不同端口上的 AJAX 访问时 $_SESSION 变量为空

php - jquery中如何获取session的值

c# - 使用 C# 实现 MQTT 客户端以连接外部 MQTT 代理

c# - 下拉没有 id 也没有名字

c# - 我可以结合正则表达式问题 ([\\d]*$) 和 ([\\d]*)c$

java - 在桌面应用程序 : in which layer? 中管理登录 session

c# - 为单个应用程序禁用凭据管理器

c# - ASP.NET DefaultButton 和 MasterPages

asp.net - 在 asp.net 中使用 SAML2.0 进行 SSO