【问题标题】:how safe is it to use session variables - asp.net / c#使用会话变量有多安全 - asp.net / c#
【发布时间】:2012-11-07 05:47:57
【问题描述】:

所以基本上我想知道我使用 Session 变量的方式有多安全。

我有一个登录表单,用户输入他的用户名/密码,它被参数化然后查询,如果用户名/密码存在,则从 db 表返回一个用户 ID。这对每个用户来说都是独一无二的。

当我有这个值时,我想知道这种方式是否是在会话变量 uID 中存储用户 ID 的安全方式?反正我就是这么干的,

Session["uID"] = (int)dt.DefaultView[0]["userID"];

FormsAuthentication.RedirectFromLoginPage(username.Text, false);

Response.Redirect("userPage.aspx", false);

然后页面被重定向到另一个页面,我使用会话变量从数据库中获取用户表。

提前感谢您的反馈

【问题讨论】:

标签: c# asp.net session


【解决方案1】:

非常安全,.NET 会话变量与可以从客户端查看的 cookie 变量不同,此实例中的会话变量只能从 C# 代码访问。

因此,您可以放心,除了运行后台的代码之外,任何人/事物都不能编辑 Session 变量。

与您的问题不完全相关,但在您的情况下可能会很高兴:

你也可以将整个对象存储在 Session 中,这样你就可以在 session 中存储一个用户对象,例如

user_Class user = new user_Class();
user.UID = 1;
Session["User"] = user;

然后在加载每个页面时将其重新加载。

user_Class user = (user_Class)Session["User"];

那么你每次都可以从 session 中获取 user.UID。

【讨论】:

  • +1 太棒了!我从来没有想过像这样使用它。 :)
【解决方案2】:

会话状态完全保存在服务器端,无论您使用哪种存储方法(内存中、会话状态服务器或数据库)。

因此,除非您的服务器被黑客入侵,否则会话变量是安全的。而且万一你的服务器被黑了,黑客只能访问他自己会话中的数据,除非他找到一种方法来分析 IIS 进程的内存。

【讨论】:

  • @Roy Dictus:我的问题是“如果攻击者入侵了服务器,他如何访问会话变量?” .因为根据知识.cs文件被转换成.dll
  • @Shaggy 他只能访问自己的会话。即使他知道正确的 Session 变量名称。
  • 隐含的 hack 本质上是不是让人心血来潮?
  • @Roy Dictus 您如何看待会话中的 MITM 攻击?请阅读并考虑您的回答,如果服务器没有被黑客入侵,我们仍然很容易受到攻击。owasp.org/index.php/Session_hijacking_attack
  • Session ID 不是作为 cookie 存储在客户端计算机中的吗?
【解决方案3】:

一切都好,直到您的网站超出单个服务器。然后你必须迁移你的session provider to a state server or back it off with sql server,这最终有点糟糕。

有关会话安全问题的完整列表,请参阅 http://msdn.microsoft.com/en-us/library/ms178201%28v=vs.80%29.aspx

【讨论】:

    【解决方案4】:

    当涉及到会话时,您可以放心,数据不可直接访问。如果出于某种原因,您的应用程序曾经直接从会话中返回可能被利用的数据,但很少有任何理由这样做,因此风险相当小。

    会话中最危险的部分是会话劫持。看,即使您的所有数据都安全地存储在服务器上,我们仍然需要处理整个“HTTP 是无状态的”问题。因此必须在客户端上存储某种标识符,以便服务器可以查找正确的会话数据。但是,如果另一个系统以某种方式获取了该 ID,那么只要服务器保持会话处于活动状态,他们就可以假装是您。

    除了不断解决您网站中的任何跨站点脚本潜力之外,如果没有安全连接,您将无能为力。即使这样,它也可能被不当实施。

    【讨论】:

      【解决方案5】:

      即使您的服务器没有受到威胁,您仍然很容易受到攻击 使用MITM Attack 可以轻松劫持会话,当攻击者获取您的会话时,他可以做任何您能做的事情。

      您可以使用技术来避免会话劫持,但请记住,如果存在编码问题等导致您的应用程序易受攻击的情况,您仍然容易受到攻击。

      使用 SSL

      SSL你的网站

      生成Hash

      Protecting Session

      【讨论】:

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