我正在探索cookie和会话[我在ASP.NET C#microsoft框架中使用它们]
我对它的看法就像是,
用户登录并建立会话后,会给他或她一个会话ID以进一步跟踪他们。
此外,此B
可以存储在服务器上,如SQL Server或InProc,这意味着它存储在发布服务器或缓存Redis缓存中。
我的问题是,
我可以理解,sessionId
存储在一个内存中,并且随着每个请求(因为HttpSessions是无状态的)被发送为HttpHeaders。
sessionId
并提供新的sessionId
会怎么样?答案 0 :(得分:1)
<强> 1。当我们谈论在内存中存储会话时,我们在谈论哪些内存?
Ans:InProc模式,它将会话状态存储在Web服务器(RAM)的内存中。这是默认值。
<强> 2。如果我们将它们存储在cookie中,那么如果我去修改cookie呢?
Ans:只有会话ID存储在cookie中。如果您不想使用cookie进行会话跟踪,asp.net框架也会通过将其附加到URL中来支持它。如果更改cookie值,服务器将无法使用存储的会话数据识别请求。您需要了解http是无状态协议,sessionid是往返期间请求的浏览器的标识符。如果更改cookie值,服务器将无法识别请求。
幸运的是,如果您提供有效的sessionid,服务器将根据该ID提供存储在会话中的内容。这称为会话劫持
https://en.wikipedia.org/wiki/Session_hijacking
第3。如果我可以修改它们,如果我更改了sessionId并在新的sessionId中提供了什么?
Ans:如果您正在使用System.Web.SessionState的SessionId。它不能被改变,因为它是readonly。但您可以在客户端(Cookie或URL)自由更改任何内容
命名空间:System.Web.SessionState
程序集:System.Web(在System.Web.dll中)
public string SessionID { get; }
答案 1 :(得分:0)
2/3。修改sessionId称为session hijacking,允许您&#34;成为&#34;那个用户。这通常被利用跨站点脚本(XSS)等攻击。
为防止劫持,请确保: