【问题标题】:ASP.NET MVC Session State TimeoutASP.NET MVC 会话状态超时
【发布时间】:2015-04-30 16:22:32
【问题描述】:

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

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

【问题讨论】:

  • 您可以在需要的地方使用会话

标签: c# asp.net asp.net-mvc session session-state


【解决方案1】:

您引用的已接受答案部分说明

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

MVC 的构建理念是,您的网站是信息逻辑模型的视图。它鼓励通过使用简单的控制器来响应具有作为 HTTP 请求的一部分传递的关键信息的操作来进行无状态操作

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

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

如何配置会话状态超时以提高安全性是否重要?

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

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

【讨论】:

  • 很好的答案,你填补了我没有指定的空白。
【解决方案2】:

正如您所提到的,确实不建议在 mvc 中使用 session 。因为,在 mvc 中,identity 用于在 identity 中不需要 session。数据存储在 profile 中。

当您想要维护多个页面或多个控制器的值时,会在这种情况下使用会话。例如,登录后,您将维护用户名并保留它,直到您留在应用程序中。而 tempdata 用于保存或维护当前操作的值,并在下一个操作后丢弃该值

会话状态与安全无关,因此出于安全考虑,无需更改会话超时值。

【讨论】:

    猜你喜欢
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 2012-01-03
    • 1970-01-01
    • 2011-08-12
    • 2021-03-03
    • 1970-01-01
    相关资源
    最近更新 更多