【问题标题】:Basic safe sessions in ASP .Net?ASP .Net 中的基本安全会话?
【发布时间】:2013-02-07 14:18:36
【问题描述】:

首先,我没有使用表单身份验证。

我找到了一个很棒的教程,几乎可以满足我的要求: http://www.codeproject.com/Questions/358434/Keep-me-signed-in-until-Loggged-out

唯一的问题是这似乎不是一个好主意。它将用户名存储在 cookie 中。这似乎很糟糕。

我怎样才能以安全的方式完成本教程的操作?

我基本上只想要这个基本流程:

if user logged in then show page

用户可以选择登录会话(30 分钟不活动)或直到他们选择明确注销。

我觉得为此我需要在我的数据库中创建一个会话表,但我不确定。

它不必是顶级安全,因为这是用于 Intranet,但我仍然希望它有点安全。

谢谢

【问题讨论】:

  • “首先,我没有使用表单身份验证”- 为什么不呢?
  • 另外,您还没有“接受”您之前 8 个问题中任何一个的答案。你应该调查一下。

标签: c# asp.net


【解决方案1】:

最简单的方法是在您的登录功能中,一旦您验证了它们,只需添加:

FormsAuthentication.SetAuthCookie(theUserName, persistCookieBoolean);

现在您已经设置了身份验证 cookie。无需加密或解密。获取用户名:

HttpContext.Current.User.Identity.Name

并查看他们是否已登录:

HttpContext.Current.User.Identity.IsAuthenticated

现在您也可以在 web.config 中轻松设置授权。相关帖子:Manual Access control in ASP .Net

【讨论】:

  • 我似乎无法访问 HttpContext.Current.Request.LogonUserIdentity.Name。我尝试加载页面,但出现错误。
  • HttpContext.Current.User.Identity.Name 返回什么? LogonUserIdentity != User.Identity.Name
【解决方案2】:

在存储到 cookie 之前加密您的数据(用户名等)。

读取 cookie,解密数据然后验证。

检查这个:

Encrypting & Decrypting Data in .NET Applications

Encrypt/Decrypt string in .NET

【讨论】:

    【解决方案3】:

    您可以使用会话。

    示例代码 VB:

    登录时做:

    Session("Username") = "username"
    

    然后每次在页面加载时检查Session("Username") 是否有任何数据/不为空。

    如果它为 null 或为空,则 Session 已过期,您可以将它们踢出页面。

    【讨论】:

      猜你喜欢
      • 2013-05-03
      • 2011-07-16
      • 1970-01-01
      • 2012-05-17
      • 2011-10-22
      • 2019-04-03
      • 1970-01-01
      • 2012-04-15
      • 2016-07-28
      相关资源
      最近更新 更多