ASP.NET和会话状态/登录信息

时间:2010-03-25 16:46:02

标签: c# asp.net authentication session-variables

Session变量(在ASP.NET中)是存储与用户是否登录相关的数据的最安全方式吗?即Session["LoggedIn"] = 'No'

我知道会话变量可以被欺骗,所以我认为必须有一种更安全的方式。

ASP.NET的任何想法?

谢谢!

6 个答案:

答案 0 :(得分:2)

我从来没有听说过能够在ASP.Net(或我所知道的任何其他平台)中欺骗会话变量。

你可以欺骗Form Variables,这是你在想什么?

答案 1 :(得分:1)

会话变量应该是安全的。另一方面,饼干,没有。

答案 2 :(得分:1)

会话是安全的,因为它们在服务器上运行。因此,直接掌握它们是相当困难的。然而,这并不是说它们是完全安全的(但是它是什么?)。黑客仍然可以通过劫持其他会话来欺骗其他人。这称为会话劫持。您可以获得有关如何降低其可能性的信息here

它们是最安全的数据存储方式之一,因此您应该使用它们。但是不要忘记,如果您使用默认的in-proc方法,会话将存储在内存中。如果您持有太多数据,您的内存将被快速消耗。对于大量数据,请考虑将会话存储在数据库或外部会话专用服务器中。

答案 3 :(得分:1)

答案 4 :(得分:0)

@ V-Man你只有几个选择,你的解决方案是无状态的。一个是会话,只要你没有创建一个没有分布在多个Web服务器上的庞大的基于Web的系统,那么会话变量是你最好的选择。另外做的就是缓存结果。

答案 5 :(得分:0)

会话很好用,但请记住,如果你去多个服务器,它可能会成为问题。

通常,您可以通过检查以下内容来判断是否有人登录,假设您使用的表单或Windows身份验证:

HttpContext.Current.User

我还在sessin中为我可能需要经常访问的用户存储了扩展信息,例如他们的个人资料可能包含全名,电子邮件,访问级别等内容...