我阅读了有关会话劫持文章的内容,并希望获得更多与之相关的信息。目前我在ASP.NET中开发的Web应用程序正在使用Cookieless = true模式进行sessionstate。我们使用的HTTPS是一种安全连接,可以减少会话劫持。我知道当我们使用Cookieless时,会话ID嵌入在URL中,如果用户将此URL传递给某人,则有时会很危险,如果会话仍处于活动状态,则其他用户将能够登录。所以我只想知道HTTPS是绰绰有余还是我应该做些什么来保护我的网络应用程序。
答案 0 :(得分:4)
HTTPS仅保护客户端和服务器(或服务器和客户端)之间的数据抓取和更改。如果用户与朋友(或黑客:)分享链接,它无法帮助你。)
作为一个选项,您可以在会话启动时将会话变量中的客户端IP保存,并检查每个请求是否来自会话的当前IP和IP相同。这将提供更多的安全性。
答案 1 :(得分:4)
如果客户端IP更改并强制他们重新登录,您可以结束会话。
答案 2 :(得分:2)
会话劫持可能通过多种方法发生。 HTTPS可防止嗅探,但XSS是迄今为止最常见的攻击。您可以使用httponlycookies来阻止xss攻击访问document.cookie
,但攻击者可以“骑”到会话xmlhttprequest(Sammy蠕虫对MySpace执行此操作)。说到会话骑行,你应该看看CSRF。如果您将会话ID存储在数据库中,甚至SQL注入也可用于劫持会话,但并非所有Web应用都执行此操作。
使用httponlycookies,确保它们仅为https,使用https进行所有操作。 不要使用asp.net的“无cookie”会话,这会使您容易受到Session Fixation的攻击。会话ID应始终使用cookie传递,并且永远不会作为GET或POST传递。您可能需要考虑using STS。
答案 3 :(得分:2)
还要考虑您的会话ID可能会在HTTP_REFERER标头中向外部人员显示。 HTTP_REFERER将包含访问的最后一页的URL - 包括URL参数中的会话ID - 如果用户跟随在同一浏览器窗口中打开的链接。 如果链接指向您的服务之外,那将是一个问题。