ASP.NET MVC会话状态超时

Muh*_*eed 2 c# asp.net asp.net-mvc session session-state

鉴于会话状态未在ASP.NET MVC中推荐.我试图理解在什么情况下使用会话.我知道使用TempData会创建一个会话,但是还有其他什么情况,我是如何配置会话状态超时以获得更好的安全性的?

<sessionState cookieName="s" timeout="20" />
Run Code Online (Sandbox Code Playgroud)

Eri*_* J. 5

您接受的答案部分说明了

这往往导致过度使用会话,在会话中填充"当前"变量,旨在指示当前与之交互的对象是什么.这种过度使用反过来使应用程序非常依赖于状态,并且更难以确定预期的行为("这个变量是否已填充?""我是否还有当前的订单ID?").

MVC的构思围绕着您的网站是一个信息逻辑模型的视图.它鼓励通过使用简单的控制器来响应无状态操作,这些控制器响应具有作为HTTP请求的一部分传递的密钥信息的动作

当您的网站需要将特定内容与特定用户绑定时,无论是出于安全还是个性化目的,会话都不是一件坏事.为此目的使用会话是好的,期望的和正常的.

您应该避免做的是在会话中填充您在Web应用程序中可能需要的任何和所有信息.花时间学习和理解MVC架构,并且有利于在实际呈现该页面时加载呈现给定页面所需的数据.仅缓存加载相对昂贵或在许多/所有页面上都需要的内容.

我是如何配置会话状态超时以获得更好的安全性的?

会话超时期间的主要问题是会话劫持攻击,它允许中间人拦截会话信息并在黑客的控制下控制来自不同设备的会话.对于大多数应用程序,我没有看到默认会话超时有任何问题.

另一个问题是人们离开他们的设备,让人无人看管.这样做的人比你的网站有更多的安全担忧.