【问题标题】:how safe is it to use session variables? ASP.NET C#使用会话变量有多安全? ASP.NET C#
【发布时间】:2016-08-02 23:39:12
【问题描述】:

我的登录页面中有此代码:

        Session["user"] = user.Text;
        cmd.Parameters.AddWithValue("@user", Session["user"]);
        reader = cmd.ExecuteReader();

我看到了这个链接how safe is it to use session variables - asp.net / c#

我想知道我是否需要更改这种登录类型。

我的问题是使用会话是否安全,是否有可能从另一个用户那里窃取会话并以该用户或类似的身份进入网站。

我尝试使用会员资格,但无法更改注册表,因此我转到了 Session。

【问题讨论】:

  • 据我所知,会话变量存储在每个用户的服务器上,所以那里是安全的,除非服务器被黑客入侵
  • 访问服务器有多难?在 asp.net 中创建登录页面的最佳保护方式是什么?
  • 入侵服务器并不容易,保护本地系统是系统管理员的工作。入侵服务器可能就像其最薄弱的安全点一样容易。如果本地系统被黑客入侵,公司可能会遇到比单个应用程序更大的问题。过去我开发了自己的自定义登录逻辑,随着时间的推移,我发现使用开箱即用的会员/身份功能更容易、更好、更安全、更快。谷歌一下,你会发现很多文章帮助你实现它
  • 我尝试使用会员,但我无法编辑 createuserwizard 控件..也许你可以在这里帮助我stackoverflow.com/questions/38701388/…

标签: c# asp.net session


【解决方案1】:

只要您使用 HTTPS,就可以使用会话状态来跟踪当前登录用户。会话变量存储在服务器内存中(默认)

我们在 Classics ASP 和 ASP.Net 1.0 中都使用了类似的方法(在 ASP.Net 2.0 中的 Membership 之前)

主要缺点是维护。当应用程序的页面过多,不同权限的用户过多时,很难维护。

【讨论】:

  • 没错,我假设默认是https,没有重要的Web应用程序应该只通过http传输数据
  • 也许用户想知道为什么不保存使用 HTTP :)
【解决方案2】:

正如已经说过的,只要您使用 https 协议并且您的应用服务器是安全的,您就不必担心会话安全。

但是您应该考虑使用 Identity 框架而不是旧的 Membership 框架。 自 2013 年以来,身份是新的身份验证 .NET 标准,允许 SSO、角色提供者、基于声明的身份验证等......

请参阅http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity 了解为什么您应该选择身份而不是会员)

【讨论】:

    猜你喜欢
    • 2012-11-07
    • 2015-11-04
    • 2012-05-03
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 2012-03-26
    • 2011-02-15
    相关资源
    最近更新 更多