Js注入检测函数咋办

JavaScript017

Js注入检测函数咋办,第1张

答:首先要截获检测函数的动态代码,动态执行js代码有两种方法,一是eval,二是function。

现在很多网站都上了各种前端反爬手段,无论手段如何,最重要的是要把包含反爬手段的前端javascript代码加密隐藏起来,然后在运行时实时解密动态执行。

动态执行js代码无非两种方法,即eval和Function。那么,不管网站加密代码写的多牛,我们只要将这两个方法hook住,即可获取到解密后的可执行js代码。

注意,有些网站会检测eval和Function这两个方法是否原生,因此需要一些小花招来忽悠过去

<script>

function $(id){return document.getElementById(id)}

function trim(s){return s.replace(/(^\s*)|(\s*$)/g,"")}

function Login(){

var user=$("user").value

var pwd=$("pwd").value

if(!trim(user)){alert("用户名不能为空")$("user").focus()return false}

if(!trim(pwd)){alert("密码不能为空")$("pwd").focus()return false}

if(pwd.length<6){alert("密码不能少于6位数")$("pwd").focus()return false}

if(pwd.length>16){alert("密码不能大于16位数")$("pwd").focus()return false}

$("loginform").submit()

}

</script>

<form name="loginform" id="loginform">

    <input type="text" name="user" id="user" />

    <input type="password" name="pwd" id="pwd" />

    <input type="button" value="提交" onclick="Login()" />

</form>

首先要定义一个去掉字符串两端空格的函数,可有用正则表达式

String.prototype.trim=function(){

return this.replace(/(^\s*)|(\s*$)/g,"")

}

var str=" 去掉两端空格 "//假设str是你获得的字符串

alert(str.trim().length)