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" ....
分享到:
相关推荐
很多WEB开发语言为了防止浏览器禁止了cookie而无法识别用户,允许在URL中携带sessionid,这样虽然方便,但却有可能引起钓鱼的安全漏洞。
tomcat修改sessionId,同一台服务器部署多个tomcat需要修改sessionId,否则会出现session冲突的问题
//得到Cookie的所有内容,包括SESSIONID,在进行下次提交的时候 直接把这个Cookie的值设到头里头就行了 //淡然只得到SESSIONID也很简单的 ,但是有时候Set-Cookie的值有几个的 List<String> list = (List) ...
NET的csharp的session丢失sessionid不一样 由于本地浏览器设置或者系统设置,导致sessionid无法准确上传到服务器
如果没有sessionId就新创建session,如果有sessionId,就去redis中查看是否有此id的记录,如果没有就新建session,如果有,还是新建session,并把redis中此session的相关数据赋值给新建的session,最后保存sessionId...
获取 SessionID方法 获取 SessionID方法 获取 SessionID方法
PHP禁用cookie如何使用url传递session id
tomcat+nginx+redis 实现sessionId共享!里面有文档自己看就可以了很详细了很详细了很详细了
本文档是我平时开发时利用业余时间编写,希望能与大家共勉,不足之处请见谅
在session共享中遇到的坑。自己通过更改源码实现自定义功能
Acct-Session-idAcct-Session-idAcct-Session-idAcct-Session-idAcct-Session-idAcct-Session-idAcct-Session-id
我们新学语言的总是想着完成功能就成 没有考虑那么多 网站的各种性能 当别人登录过一次网站 记住后面的URL 完全可以直接跳过登录就执行后面的操作 使得网站 安全大大受损。要解决这个问题 就需要Session来实现验证了...
SessionId研究
//第一次请求登录接口时保存到sessionid中 success: function (res) { wx.hideLoading(); wx.removeStorageSync('sessionid');//每次登录时清楚缓存 if (res.data.code == 0000) { if (res.data.data.roleList...
proxy.CookieContainer存储了客户端的 ASP.NET_SessionId。这样以后每次通过webservice 方法调用时,都会将ASP.NET_SessionId传递到服务器端。
主要用于在web应用中配置,进行url的重写,美化网站链接
server端向浏览器client发送通知这种通讯模式. 扩充,sessionid 采用userid.对不同用户发送不同信息。
java中使用session模拟用户登陆
php中session_id()函数原型及说明session_id()函数说明:stringsession_id([string$id])session_id() 可以用来获取/设置 当前会话 ID。为了能够将会话 ID 很方便的附加到 URL 之后, 你可以使用常量 SID 获取以字符串...
当开启session后,服务器会在服务器中保存session文件,然后再浏览器保存session的id号,用于获取对应的session信息; 二、下面是文章的重点:基于URL传输session 如果按照基本的session方法传输session,那么会用到...