javascript作为病毒?....来源编辑

时间:2009-11-10 12:00:47

标签: javascript

这是我简单的html源代码

<html>
<head>
<title>
Dec2Bin
</title>
<script type="text/javascript">
function app() {
    var decimal = prompt("Numero en Decimal");
    alert("El numero " + decimal + " en codigo binario es igual a " + dec2bin(decimal));
}

function dec2bin(decimal) {
    var binario = "";
    while (decimal != 0) {
        if (decimal % 2 == 0) {
            binario += "1";
        }
        else {
            binario += "0"
        }
        decimal = decimal / 2
    }

    return binario;
}
</script>
</head>
<body>
<input type="button" onclick="app()" value="Procesar" />
</body>
</html>

Avg一直告诉我它是病毒..如果我删除它停止了javascript ...我该怎么办?

4 个答案:

答案 0 :(得分:3)

您似乎有一个无限循环,因为十进制将永远不会等于0 。我可以看到AVG可能不喜欢这个。

function dec2bin(decimal) {
    var binario="";
    while(decimal!=0) {
        if(decimal % 2==0)
            binario+="1";
        else
            binario+="0"
    }
    decimal/=2
    return binario ;
}

我做了一个快速的谷歌搜索,并提出了一个更清洁的功能:

function dec2bin(dec) {
    var bits = [];
    var remainder = 0;
    while (dec >= 2) {
        remainder = dec % 2;
        bits.push(remainder);
        dec = (dec - remainder) / 2;
    }
    bits.push(dec);
    bits.reverse();
    return bits.join("");
}

答案 1 :(得分:2)

我不是100%确定这是否是原因,而是你的while循环:

while(decimal!=0)
{
if(decimal % 2==0)
binario+="1";
else
binario+="0"
}

未终止,因为decimal外部循环之前不会更改。因此,运行该循环应该会锁定您的浏览器。

<小时/> 我在更新的代码中看到的唯一另一件事是prompt没有强制decimal到一个数字。

如果用户没有输入数字,decimal/2将返回NaN,它将永远不会等于零,因此您的循环不会终止。我建议使用parseInt转换为整数,然后如果 返回NaN,您可以将0分配给decimal或者找到其他方法跳过你的while循环(比如将while循环的条件改为decimal != 0 || decimal != NaN

我怀疑反病毒会选择这种方式,但这并非不可能。

答案 2 :(得分:1)

虽然如果AV工具可以自动解决暂停问题(!),那将是可爱的,但它可能只是今天完全无望的反病毒行业的一长串误报中的另一个。也许重命名一些变量并稍微移动一下代码会在短期内阻止它,但总的来说误报对于任何程序员来说都是生活中令人厌倦的事实。

唯一需要检查的是:AVG检测到上面发布的确切来源是否在本地文件中没有其他内容作为病毒?对我来说,virustotal的AVG并没有将这样的文件标记为可疑。它只在网上检测到它吗?如果是这样,您需要检查View-&gt; Source,看看您的服务器上没有出现任何妥协,在服务时意外地将恶意脚本注入页面。

答案 3 :(得分:-6)

最好的办法是卸载AVG。病毒扫描程序是一种骗局,它们会显着降低计算机的性能。如果您真的担心恶意软件,最好的办法是安装ubuntu作为您机器的主操作系统,并在虚拟机等虚拟机内运行Windows。