ASP.NET MVC 会话状态超时

ASP.NET MVC Session State Timeout

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

<sessionState cookieName="s" timeout="20" />

您引用的已接受答案在部分

This tended to lead to an overuse of session, populating "current" variables in session intended to indicate what the current object being interacted with was. This overuse in turn made applications very state-dependent and much harder to determine expected behaviour ("Is this variable populated?" "Do I have the current order ID yet?").

MVC is structured around the idea that your website is a view into a logical model of information. It encourages having stateless operations through the use of simple controllers responding to actions with key information passed as part of the HTTP request

当您的网站需要将某些内容绑定到特定用户时,会话并不是一件坏事,无论是出于安全目的还是个性化目的。为此目的使用会话是正常的、预期的和正常的。

您应该避免在会话中塞满您在 Web 应用程序中任何地方可能需要的任何和所有信息。花时间学习和理解 MVC 架构,并支持在实际呈现给定页面时加载呈现该页面所需的数据。仅缓存加载成本相对较高或 many/all 页需要的内容。

does it matter how I configure the session state timeout for better security?

会话超时期限的主要问题是会话劫持攻击,它允许中间人拦截会话信息并从黑客控制的不同设备控制会话。对于大多数应用程序,默认会话超时没有发现任何问题。

另一个问题是人们离开他们的设备而无人看管。这样做的人比您的网站更担心安全问题。

如你所言,mvc中确实不推荐使用session。因为,在 mvc identity 中用于 identity 不需要 session.the 数据存储在配置文件中。

当你想为多个页面或多个控制器维护值时,在这种情况下使用会话。例如,在登录之后,您维护用户名并保留它,直到您留在应用程序中。虽然临时数据用于保存或维护当前操作的值,但该值在下一个操作后被丢弃

会话状态与安全无关,因此无需为了安全而更改会话超时值。