问题:我正在使用eval来解析来self的WebMethods之一的JSON返回值。我不想添加jquery-json,因为传输量已经很大了。所以我用eval解析JSON返回值。现在有传言说这是不安全的。为什么?除非他们入侵我的服务器,否则没有人可以修改JSOn返回值,在这种情况下,无论如何我都会遇到更大的问题。如果他们在本地执行,JavaScript只会在他们的浏览器中执行。所以我看不出问题出在哪里。任何人都可以使用这个具体示例阐明这一点吗?functionOnWebMethodSucceeded(JSONstrWebMethodReturnValue){varresult=eval(
我计划为我的学生制作一个快速网页,教他们JavaScript编程。在这个页面上,我想给他们一个文本框并允许他们运行JavaScript,以便他们可以看到工作中语言的动态特性。但是,我很清楚在用户输入上使用eval()通常是一个非常糟糕的主意。发布这样的页面会带来什么样的安全风险?我应该采取哪些步骤来降低这些风险? 最佳答案 您面临的安全风险是,您从用户那里获取输入并在您网站上的脚本上下文中运行它。想象一下,如果您是一个恶意破解者,无论出于何种原因都可以完全访问修改JavaScript在网站上运行。您可以执行在您的域上运行的JavaS
这个问题在这里已经有了答案:NumberwithleadingzeroinJavaScript(3个答案)关闭5年前。如果我使用代码:string='010';write=eval(string);document.write(write)我在页面上写了8。为什么?即使010不是字符串,也会发生这种情况。
我想知道是否有人可以解释使用Javascript的eval()与其他方法(例如使用JQuery创建脚本标记然后将该元素附加到页面)之间的区别:eval(somecode);对比$(""+somecode+"").appendTo("head");不确定这是否相关,但这是上下文:我正在使用DrupalPopups模块的一个版本,其基本目的是通过AJAX处理整个页面请求并将其附加到模态窗口中的页面。这通常包括外部CSS和Javascript文件。为了提高所有这些AJAX加载的性能,我转而使用AJAX队列,并将外部脚本的eval()更改为所列的备选方案。但是,这会导致其他各种页面出现零星的J
我尝试检查es6中的“变量”是否常量:consta=1;functiontest(){try{a=2;//throwsanerror}catch(error){console.log(error)}}test();但是当我使用eval()函数时,它不会抛出错误。consta=1;functiontest(){try{eval("a=2;")//notthrowsanerror}catch(error){console.log(error)}}test();我将常量设置为本地常量,函数eval确实会按预期抛出错误。functiontest(){try{consta=1;eval("a=2
从今天开始,在Chrome73.0.3683.103控制台中,我看到以下错误:TheContentSecurityPolicy'script-src'report-sample''nonce-PNYOS1z63mBa/Tqkqyii''unsafe-inline';object-src'none';base-uri'self''wasdeliveredinreport-onlymode,butdoesnotspecifya'report-uri';thepolicywillhavenoeffect.Pleaseeitheradda'report-uri'directive,ordeli
我有一组在整个应用程序中使用的javascript类。在一种情况下,我想从形状匹配我的一个类的ajax响应中评估一些json。我正在使用jqueryparseJSON方法为我进行评估。唯一的问题是我现在想调用我的类中定义的方法,但我知道该方法不会存在于已评估的对象上。让这个方法在我的新对象上可用的最好方法是什么。有没有办法“转换”它? 最佳答案 JavaScript中没有转换的概念。相反,您可以修改类的构造函数以接受普通对象。你如何做到这一点取决于你如何设置你的类,但可以简单地将对象的浅拷贝包含到类的新实例中:varMyClass=
我最近尝试将一个文件导入到我现有的node.js项目中。我知道这应该用一个模块来编写,但我包含了我这样的外部javascript文件:eval(fs.readFileSync('public/templates/simple.js')+'')simple.js的内容如下所示:if(typeofexamples=='undefined'){varexamples={};}if(typeofexamples.simple=='undefined'){examples.simple={};}examples.simple.helloWorld=function(opt_data,opt_sb
我正在测试我在读书时找到的代码。我在JSfiddle中测试它时遇到此错误,document.write可以是eval的一种形式。vartext=''+'Thisisbold!';vartags=/[^]+|]*)>/g;vara,i;while((a=tags.exec(text))){for(i=0;i我在document.writeln()的两行上都收到了上述JSfiddle警告。 最佳答案 请注意,这只是一个警告-但应该得到尊重。它实际上是由一个名为JSLint的检查器生成的-http://www.jameswiseman.c
据我所知,eval()被认为是不好的做法出于安全考虑,JavaScript中的JSON对象。如果JSON来自另一台服务器,我可以理解这种担忧。但是如果JSON是我自己的服务器提供的,是用PHP的json_encode创建的(让我们假设它不是buggy),简单地使用eval()是否合法?在JS中读取JSON还是有什么我目前想不到的安全问题?我真的不想处理动态加载JSON解析器的问题,我很乐意简单地使用eval().PS:我显然会使用原生的JSON对象,如果可用,但想回退到eval()适用于IE/Opera。 最佳答案 在您的场景中,问