`
desert3
  • 浏览: 2159104 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

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

阅读更多

session.invalidate():减除绑定Session中的所有变量

 

转自:http://www.blogjava.net/BearRui/archive/2010/08/23/url_session_id_leek.html

 

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

 

图示:

   下图是从测试组发来的安全报告中剪出来的,图有些小问题,本来想重画1个,在visio中没找到合适的图。所以只能用别人的图了。

       

 

说明:    

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

  1. 黑客用自己的帐号登录,假设登录页面是:http://www.abc.com/login.jsp   

  2. 服务器返回登录成功。   

  3. 黑客从cookie中查看自己的sessionid,比如是1234   

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

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

 

防治:   

  要防止这种问题,其实也很简单,只要在用户登录时重置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" ....

分享到:
评论

相关推荐

    URL中允许携带sessionid带来的安全隐患分析

    URL中携带sessionid是一种常见的技术手段,主要用于在浏览器禁用cookie时,依然能够维持用户的会话状态。然而,这种做法虽然在某些...通过这些多层面的努力,可以有效降低通过URL携带sessionid带来的钓鱼等安全隐患。

    在Java的web编程中关于session技术的使用详解

    客户端在后续的请求中会携带这个SessionID,服务器根据SessionID找到对应的Session数据,从而实现对用户状态的跟踪。 2. **创建和获取Session** 在Java Servlet中,我们通常通过HttpSession接口来操作Session。...

    购物车功能实现

    `session`在Web开发中扮演着关键角色,它允许服务器端存储用户的特定会话信息,确保在用户的不同页面请求之间保持数据的一致性。 `session`的工作原理是,当用户访问网站并添加商品到购物车时,服务器会为该用户...

    JWT安全(总结得很全面)1

    JSON Web Token(JWT)是一种广泛使用的轻量级身份验证和授权机制,主要优点在于它可以将用户的认证信息以安全的方式在客户端和服务器之间传递,而无需在服务器端存储session信息。JWT的安全性和工作原理如下: ...

    PHP中通过语义URL防止网站被攻击的方法分享

    总之,语义URL攻击是网站安全中需要特别留意的一个方面,开发者应当加强安全意识,合理使用session跟踪和输入验证来减少安全风险。对于任何通过GET或POST提交的数据,都应当进行严格的检查和过滤,以确保数据的准确...

    HttpGet&Post;.docx

    例如,登录成功后,服务器通常会在响应中返回一个Session ID的Cookie,客户端需要保存这个Cookie并在后续请求中附带,以维持会话。 总之,GET和POST是HTTP中的核心方法,分别用于获取和提交数据。在C#中,`...

    C# 登录淘宝

    4. 处理登录结果:登录成功后,服务器通常会返回一个会话ID(Session ID)或其他标识,用于后续的请求保持登录状态。C#程序需要存储这个标识,并在之后的请求中附带。 5. 使用Cookie管理:C#的CookieContainer类...

    解决vue router组件状态刷新消失的问题

    在传统的服务器渲染模式下,登录成功后,服务器会创建一个与用户信息关联的session,并在响应头中传递session ID给浏览器,浏览器随后在后续请求中携带这个session ID。服务器根据session ID判断用户是否已登录,...

    jmeter接口测试案例

    接口测试的作用主要包括定位BUG、发现程序的安全隐患、提高测试效率等。 - **1.3.3 实现** 接口测试的基本流程是绕过前端,直接通过URL定位接口资源,提交测试数据,并判断响应结果是否符合预期。具体来说,包含...

    python中JWT用户认证的实现

    2. 后端验证用户信息,如果正确,生成一个token,并将该token与对应的用户ID存储在数据库或Session中。 3. 后端将token返回给前端,前端将其存储在浏览器的Cookie中。 4. 用户后续的请求会携带这个Cookie,后端通过...

Global site tag (gtag.js) - Google Analytics