Eval()vs开发人员工具

时间:2012-05-25 20:57:04

标签: javascript eval developer-tools

因此,古老的标准是使用Eval是不好的,因为它可能会导致严重的安全问题;特别是在您正在评估可能来自用户输入的某些内容的情况下。这使得100%有意义,并且我从未遇到任何避免使用Eval的问题。不过,我最近遇到了一个奇怪的情况,这让我想到了这种类型的东西。

我写了一个类似的JS函数:

function someFun(param, callback) {
    bool = someOtherFun(param);
    if(bool)
        callback();
    else
        return false;
}

这是很多,但是主体是相同的:它调用另一个函数,并根据它的返回值执行作为参数提供的函数,否则它将返回false。但是,我认为,使用F12中的JS控制台,可以像使用Eval(txtbox.value)一样轻松利用这种东西。那有关系吗?

在F12的这个世界里,在我看来,Eval是我们最不担心的。任何知道注射攻击的人都可能知道F12是什么。我错了吗?

2 个答案:

答案 0 :(得分:5)

虽然你是正确的,但像F12和firebug这样的工具会将你的JavaScript暴露在一个新的审查级别并让人们容易攻击,你就会错过使用eval的危险。

不要担心当前用户(浏览器中加载的页面可能会做什么)让我们自己关心他们在下一台计算机上的共同工作。假设同事在Stack Overflow上键入注释,然后将其存储在数据库中,然后发送到我们用户的计算机进行显示。并且假设作为渲染过程的一部分,注释被编码为JSON,然后在其上调用eval。

这是一个危险的漏洞利用等待,与我们的用户在页面上检查或执行自己的JavaScript无关。如果他们的同事在他们的评论中嵌入了恶意JavaScript并且我们在其上调用了eval,则可能会执行该JavaScript,导致恶意代码在每个查看该页面的计算机上运行。

这就是为什么我们应该避免使用eval。

答案 1 :(得分:2)

我没有看到漏洞利用场景。是的,他们可以通过恶意回调来调用您的函数。或者......他们可以从控制台调用恶意回调。