4

我阅读了有关 Session Hijacking 的文章,并想了解更多与它相关的信息。目前,我在 ASP.NET 中开发的 Web 应用程序正在使用 Cookieless =true 模式进行会话状态。我们正在使用 HTTPS,这是一种安全连接,可以减少会话劫持。我知道当我们使用 Cookieless 时,会话 ID 嵌入在 URL 中,如果用户将此 URL 传递给某人,并且如果会话仍然存在,其他用户将能够登录,这有时会很危险。所以只想知道 HTTPS 是否足够,或者我应该做一些事情来保护我的网络应用程序。

4

4 回答 4

4

HTTPS 仅防止在客户端和服务器(或服务器和客户端)之间获取和更改数据。如果用户与朋友(或黑客 :) 共享链接,它对您无济于事

作为一个选项,您可以在会话开始时将客户端 IP 保存在会话变量中,并检查每个请求是否当前 IP 和会话中的 IP 相同。这将提供更多的安全性。

于 2010-08-18T07:41:47.223 回答
4

如果客户端 IP 更改并强制他们重新登录,您可以结束会话。

于 2010-08-18T07:50:47.440 回答
2

会话劫持可以通过多种方法发生。HTTPS 可以防止嗅探,但 XSS 是迄今为止最常见的攻击。您可以使用 httponlycookies 来防止 xss 攻击访问document.cookie,但攻击者可以“骑”在会话 xmlhttprequest 上(Sammy 蠕虫对 MySpace 进行了此操作)。说到会话骑行,你应该看看CSRF。如果您将会话 id 存储在数据库中,甚至 SQL 注入也可用于劫持会话,但并非所有 Web 应用程序都这样做。

使用 httponlycookies,确保它们只是 https,一切都使用 https。 不要使用 asp.net 的“cookiesless”会话,这会使您容易受到Session Fixation的攻击。会话 id 应始终使用 cookie 传递,而决不能作为 GET 或 POST 传递。您可能要考虑使用 STS

于 2010-08-18T09:35:01.457 回答
2

还要考虑您的会话 ID 可能会在 HTTP_REFERER 标头中向外界透露。如果用户点击在同一浏览器窗口中打开的链接,HTTP_REFERER 将包含最后访问页面的 URL - 包括 URL 参数中的会话 ID。如果链接指向您的服务之外,那将是一个问题。

于 2010-08-18T12:36:14.973 回答