小虾虎鱼

小虾虎鱼

卡巴斯基对我写的js代码报毒

作者 禾惠 发表于 2017/08/26 14:56 ,最后修改于 2017/08/26 14:57

很长一段时间了,同事说我写的网站的登录页面卡巴斯基对他报毒,提示信息是:

对象名称:
HEUR:Trojan.Script.Generic

对象类型:
木马程序

我居然能写木马程序了?一脸懵逼了(我没遇到过,因为我没用过卡巴斯基)。略微看了一下,真不知道什么情况。

问题原因所在

直到昨晚,我把源码分享给同事,他说我的登录页面的源码文件卡巴斯基报毒,这下好办了,已经定位到具体文件报毒了。

经过不断的排查,最后定位到了是ajax部分卡巴斯基认为报毒(因为我用的是原生js写的ajax),

var request = new XMLHttpRequest();
request.open("POST", this.action, true);

报毒就出现在这两行代码了,两行代码随便删除一行都不会报毒,变量request只要是经过 new关键词创建的对象,并且执行了request.openrequest["open"]都会报毒。

尝试过new window["XML"+"Http"+"Request"]request["o-p-e-n".replace(/-/g, "")]都无法欺骗卡巴斯基。

解决方法

最后无奈,我在body标签上存一个open字符(<body data-open="open">),然后再在js中取,果然没有报毒了:

var request = new XMLHttpRequest();
request[document.body.dataset.open]("POST", this.action, true);

疑惑

网上说这是因为这段代码符合某些木马的特征,所以卡巴斯基报毒。 那么同事也使用过类似的写法为什么不报毒?还有那些ajax库为什么也不报毒?

我欣赏你的好品味~

打开支付宝扫一扫