您的位置:首页 > Web前端 > JavaScript

js函数劫持与反劫持

2012-06-25 10:36 176 查看
说明:主要的思路就是重写JS函数,如果学习过高级语言的朋友就很容易理解

好上代码:

1.劫持

<html>
<head>
<title>js函数劫持</title>
<scripttype="text/javascript">

var_alert=window.alert;
window.alert=function(msg)
{

if(confirm('alert方法被调用'))
_alert(msg);
}

var_eval=eval;
eval=function(s)
{
//logipsendtosrv
if(confirm('eval方法被调用'))
_eval(s);
}

alert('hah');
eval('alert(\"ev\");');

</script>

</head>
<body>

</body>
</html>


2.反劫持

<html>
<head>
<title>js函数反劫持</title>
<scripttype="text/javascript">

varmsg="";
msg=eval+"\n\r";
var_eval=eval;
eval=function(s)
{
//logipsendtosrv
if(confirm('eval方法被调用'))
_eval(s);
}

msg+=eval;

document.write(msg);

/*
检查函数是否有劫持
*/
functioncheckJSHook(proc)
{
if(proc.toString().indexOf("[navtivcodde]")>0)
returnfalse;
else
returntrue;
}
alert(checkJSHook(eval));
</script>

</head>
<body>

</body>
</html>


为什么使用checkJSHook函数体来判断

因为内置函数和自定义函数返回数据部一样

如下:

functioneval(){[nativecode]}//内置函数都返回[nativecode]
function(s){//logipsendtosrvif(confirm('eval方法被调用'))_eval(s);}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: