Javascript Eval()与开发人员工具

Javascript Eval()与开发人员工具,javascript,eval,developer-tools,Javascript,Eval,Developer Tools,所以古老的标准是使用Eval是不好的,因为它会导致重大的安全问题;特别是在您正在评估可能来自用户输入的某些内容的场景中。这是100%合理的,我从来没有遇到过避免使用Eval的问题。我最近遇到了一个奇怪的情况,这让我对这类事情的想法有点不同 我编写了一个JS函数,类似于: function someFun(param, callback) { bool = someOtherFun(param); if(bool) callback(); else

所以古老的标准是使用Eval是不好的,因为它会导致重大的安全问题;特别是在您正在评估可能来自用户输入的某些内容的场景中。这是100%合理的,我从来没有遇到过避免使用Eval的问题。我最近遇到了一个奇怪的情况,这让我对这类事情的想法有点不同

我编写了一个JS函数,类似于:

function someFun(param, callback) {
    bool = someOtherFun(param);
    if(bool)
        callback();
    else
        return false;
}
这是非常精简的,但主体是相同的:它调用另一个函数并基于的返回值,该函数将执行作为参数提供的函数,或者返回false。不过,这让我想到,通过使用F12中的JS控制台,这种东西可以像Evaltxtbox.value一样容易地被利用。那有关系吗


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

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

虽然F12和firebug等工具将JavaScript暴露在一个新的审查级别上,并使人们易于攻击,但您没有意识到使用eval的危险

与其担心在浏览器中加载页面的当前用户可能会做什么,不如让我们自己关注他们在下一台计算机上的合作。假设同事在堆栈溢出上键入注释,然后将其存储在数据库中,然后发送到用户的计算机上显示。让我们假设,作为呈现过程的一部分,注释被编码为JSON,然后对其调用eval

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


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

这种东西可以像使用F12中的JS控制台一样容易地利用Evaltxtbox.value。-请详细说明。如何利用?还有,你到底在问什么?你知道地址栏也可以是注射点吗?这不仅仅是控制台。让我们明确一点:任何将代码放在客户端操作员手中的系统都可能被“利用”。Javascript+浏览器完全取决于操作员。这里的问题是什么?或者他们可能只是用一个充当web浏览器的恶意程序加载页面,然后做各种坏事。客户端是完全不安全的,不可信任。如果用户愿意,他们可以用开发工具破坏自己的浏览器——对此我们无能为力。威胁来自其他用户。开发人员工具的危险在于,它们比以往任何时候都更容易攻击服务器——但当然,我们已经确保服务器端代码能够抵御CSRF、SQL注入等攻击,不是吗-@StuCox我不明白开发者工具是如何允许的。。。黑客X的网页/脚本能让开发者工具在Joe Y的浏览器中运行,并在Joe Y的环境中做坏事吗?如果用户JoeY正在做恶作剧的事情,那么就没有黑客X参与其中。只是用户Joe Y.开发者工具与此无关。如果您不能100%确定数据是否安全,则在代码中使用eval会导致此漏洞。数据流是:一个用户->服务器->另一个用户。我的解释是,当有人可以简单地使用开发工具自己修改代码时,他想知道如果我们使用eval是否真的很重要。这就是为什么我说开发人员工具与此无关,因为无论是否有人使用eval,使用eval都可能是危险的。@pst-是的,唯一的威胁来自当前用户Joe Y-我不是说存在特定的安全漏洞,只是将定制的POST请求与现有的cookies等结合起来比以往任何时候都容易。