卡巴斯基对我写的js代码报毒
很长一段时间了,同事说我写的网站的登录页面卡巴斯基对他报毒,提示信息是:
对象名称:
HEUR:Trojan.Script.Generic
对象类型:
木马程序
我居然能写木马程序了?一脸懵逼了(我没遇到过,因为我没用过卡巴斯基)。略微看了一下,真不知道什么情况。
问题原因所在
直到昨晚,我把源码分享给同事,他说我的登录页面的源码文件卡巴斯基报毒,这下好办了,已经定位到具体文件报毒了。
经过不断的排查,最后定位到了是ajax部分卡巴斯基认为报毒(因为我用的是原生js写的ajax),
var request = new XMLHttpRequest();
request.open("POST", this.action, true);
报毒就出现在这两行代码了,两行代码随便删除一行都不会报毒,变量request
只要是经过 new
关键词创建的对象,并且执行了request.open
或request["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库为什么也不报毒?