2010-08-18 66 views
4

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

回答

4

HTTPS仅保护客户端和服务器(或服务器和客户端)之间的数据抓取和更改。如果用户与朋友(或黑客:)共享链接,它不能帮助你)

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

4

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

2

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

使用httponlycookies,确保它们仅用于https,对于所有内容都使用https。 不要使用asp.net的“无cookies”会话,这会让您容易受到Session Fixation的影响。会话ID应该始终使用cookie传递,并且永远不会以GET或POST的形式传递。你可能要考虑using STS

+0

thnks的建议,但我不能从cookieless更改为cookie,因为它已经实施,我可以找到相关的东西 - http://msdn.microsoft.com/hi-in/magazine/cc300500( en-us).aspx 我希望这可能有所帮助,如果有人可以提出比这更好的建议,那么它将会是grt。 – Punit 2010-08-18 11:10:38

2

还要考虑你的session ID可能会在HTTP_REFERER头文件中向外部人泄露。如果用户访问在同一浏览器窗口中打开的链接,HTTP_REFERER将包含所访问的最后一页的URL(包括URL参数中的会话ID)。 如果链接指向您的服务以外,则会出现问题。