Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该从cookie中填充会话变量吗?_C#_Asp.net Mvc_Session_Cookies - Fatal编程技术网

C# 我应该从cookie中填充会话变量吗?

C# 我应该从cookie中填充会话变量吗?,c#,asp.net-mvc,session,cookies,C#,Asp.net Mvc,Session,Cookies,我有一个带有登录功能的网站,还有一个“记住我”选项。在我的用户表中,我有一个128位的随机令牌,我把它放在cookie中,然后用它来查找用户 我将使用一个“LoggedInUser”,它是我的“User”类的一个实例,它将填充一个数据库查找,因此我可以检索用户的用户名、id和其他信息。现在假设用户有一个cookie,我应该简单地使用cookies值执行用户查找,还是应该将令牌存储在会话中并使用该值执行查找?这里主要担心的是安全性和性能,即哪个更安全,哪个加载时间更短?会话Id通常存储在cooki

我有一个带有登录功能的网站,还有一个“记住我”选项。在我的用户表中,我有一个128位的随机令牌,我把它放在cookie中,然后用它来查找用户


我将使用一个“LoggedInUser”,它是我的“User”类的一个实例,它将填充一个数据库查找,因此我可以检索用户的用户名、id和其他信息。现在假设用户有一个cookie,我应该简单地使用cookies值执行用户查找,还是应该将令牌存储在会话中并使用该值执行查找?这里主要担心的是安全性和性能,即哪个更安全,哪个加载时间更短?

会话Id通常存储在cookie中-因此,无论您自己将Id存储在cookie中还是使用SessionState cookie,几乎没有安全差异

性能方面也是如此-主要的成本将在DB查找中,显然,如果您执行两个额外的步骤(从会话状态添加/red),它将更快(可能无法测量)

注:

  • 会话状态生成的“随机”经过了大量的安全审查,希望您的审查也一样好
  • 会话状态cookie在默认情况下未标记为“安全”,因此也将通过HTTP发送,显然您的不会-因此自定义cookie更好一些
  • 会话状态可以配置为无cookie,在您的情况下,您的方案有点安全(因为您不能错误地共享cookie,但URL很容易共享)

不要重新发明身份验证系统。使用标识。