URL中容许携带sessionid带来的安全隐患。

不少WEB开发语言为了防止浏览器禁止了cookie而没法识别用户,容许在URL中携带sessionid,这样虽然方便,但却有可能引发钓鱼的安全漏洞。浏览器

图示:安全

       

说明:   服务器

  让咱们对上图的步骤进行详细说明:   cookie

  1. 黑客用本身的账号登陆,假设登陆页面是:http://www.abc.com/login.jsp   session

  2. 服务器返回登陆成功。   jsp

  3. 黑客从cookie中查看本身的sessionid,好比是1234   测试

  4. 黑客把带本身sessionid的地址发送给通常用户。http://www.abc.com/login.jsp;jsessionid=1234(不一样的语言带sessionid的方式不同,着是jsp的方式)   3d

 5. 用户在黑客给的地址中用本身的账号进行登陆,登陆成功。(这个时候用户登陆的信息就会覆盖黑客以前的登陆信息,并且2我的用的是同1个sessionid)   6. 黑客刷新页面,看到的帐户信息就是用户的信息了,而不是以前黑客本身账号的信息。orm

防治:  blog

  要防止这种问题,其实也很简单,只要在用户登陆时重置session(session.invalidate()方法),而后把登陆信息保存到新的session中。

后语:  

  可能你跟我同样,刚开始看到这个时候,就本身去测试到底能不能钓鱼成功,通过个人测试是能够成功的,但测试过程当中须要注意下面几个问题:  

  1. 要注意你使用的语言是如何在URL中带sessionid。(我测试的时候开始在URL中使用大写的jsessionid,致使一直不起效)    

  2. 要http://www.abc.com/login.jsp;jsessionid=1234页面登陆表单的action也带上了jsessionid,否则也没用。对于这个问题你可能以为若是login.jsp表单的action是写死,而不是读取当前URL的,     可能就不会出现这个钓鱼问题。这只能防住1个方向。黑客能够作1个和login.jsp如出一辙的页面(好比http://www.abc1.com/login.jsp),而后把这个地址发个客户,而这个地址中的表单这样写就能够:   <form action="http://www.abc.com/login.jsp;jsessionid=1234" ....

相关文章
相关标签/搜索