草庐IT

unsafe-eval

全部标签

Javascript 在对象字面量上调用 eval(带函数)

免责声明:我完全理解使用eval的风险/缺点,但这是一个我找不到任何其他方法的小众案例。在GoogleApps脚本中,仍然没有将脚本作为库导入的内置功能,因此许多工作表可以使用相同的代码;但是,有一个内置工具,我可以在其中从纯文本文件导入文本。这是评估代码:varid=[The-docID-goes-here];varcode=DocsList.getFileById(id).getContentAsString();varlib=eval(code);Logger.log(lib.fetchDate());这是我在外部文件中使用的一些示例代码:{fetchDate:function(

javascript - 由于安全策略,无法使用 Raphael JS 在 Chrome 扩展弹出窗口中绘制路径?

如果我尝试使用Raphael在我的Chrome扩展程序的default_popup页面中绘制路径:r.path("M0,0L10,10");我收到以下错误:UncaughtEvalError:RefusedtoevaluateastringasJavaScriptbecause'unsafe-eval'isnotanallowedsourceofscriptinthefollowingContentSecurityPolicydirective:"script-src'self'chrome-extension-resource:".我理解需要禁止eval()和类似的东西,但为什么这是

javascript - Javascript eval() 有那么危险吗?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WhenisJavaScript’seval()notevil?我正在编写一个脚本,用户必须在其中输入货币金额,一些示例可能是(用户输入>>转换为),以美元为默认货币:50>>50.0USD50.5>>50.5USD50+1USD>>51.0USD50GBP>>50.0GBP我想让这一切尽可能顺利,因此我想使用JavaScript(这是一个基于PHP/MySql+JavaScript的网络应用程序)。我想使用正则表达式来过滤输入,通过eval()运行它并返回它。这是个坏主意吗?我读过一些关于eval()是安全

javascript - 具有自定义 eval 函数的 Node.js REPL 有趣行为

似乎Node.js(版本v0.10.13)返回包裹在(和\n)之间的命令,这是一个最小的例子:require('repl').start({'eval':function(cmd,context,filename,callback){callback(null,cmd);}});行为如下:$noderepl.js>asd'(asd\n)'>这是为什么呢?如果这个特征是documented然后我找不到它。另外,如果这是预期的行为,是否有比cmd=cmd.slice(1,-2);更好的解决方案? 最佳答案 该问题已得到解决(请参阅201

javascript - 在没有eval的情况下评估Javascript中字符串中的 bool 表达式

我有一个包含bool逻辑的字符串,类似于:((true&&true)||false&&!true)Javascript中安全评估此字符串以获得bool结果的最佳方法是什么?我想避免使用eval()。 最佳答案 我为另一个问题编写了这个bool字符串解析器:varexp1="(true&&true||false)&&(true||(false&&true))";varexp2="((true&&true)||false&&!true)";varexp3="(true&&!false)&&true&&!false";varexp4="(

javascript - 如何在 Chrome/Webkit 中获取 "Unsafe JavaScript attempt to access frame with URL"错误的堆栈跟踪?

在Webkit浏览器的控制台中出现此错误的原因是众所周知的,并在错误文本中进行了清楚的描述:UnsafeJavaScriptattempttoaccessframewithURLiframed-content-example.comfromframewithURLwww.example.com.Domains,protocolsandportsmustmatch.但对于有许多可能触发错误的代码片段(广告、第三方库、站点特定脚本)的大型网站,错误消息对于跟踪和调试产生问题的代码行帮助不大.有什么方法可以在发生跨域错误时触发堆栈跟踪? 最佳答案

javascript - 将 eval() 与自定义全局变量一起使用

有没有办法在调用eval()时指定要用于global的对象?(我不是在问如何进行全局eval()。)这行不通,但这说明了我想要的:varpseudoGlobal={};eval("x=12",pseudoGlobal);pseudoGlobal.x;//12重点是真正的全局绑定(bind)不受代码eval()中的隐式变量声明(即没有var关键字)的影响。至于eval.call(pseudoGlobal,"x=12")或eval.apply(pseudoGlobal,["x=12"]),一些解释器不会允许它。 最佳答案 当然,您可以用

javascript ->= 和 <= 以及 JS 中的 eval 函数是否存在已知问题?

我目前正在编写一个JS规则引擎,它有时需要使用eval()函数计算bool表达式。首先我构造了一个等式:varequation="relation.relatedTrigger.previousValue"+""+relation.operator+""+"relation.value";relation.relatedTrigger.previousValue是我要比较的值。relation.operator是运算符(“==”、“!=”、”、>=)。relation.value是我要与之比较的值。然后我只需将这个字符串传递给eval函数,它就这样返回true或false:return

javascript - Evil Eval 的替代品——关系运算符

作为输入验证的一种形式,我需要强制将像'9>6'这样的字符串计算为bool值。除了评估字符串之外,我似乎找不到解决方法。我一直听说eval的邪恶(特别是因为我正在验证表单输入),关于它可以评估任何脚本和性能问题的事实。但是....mycase有没有其他选择?(处理关系运算符)?vararr=['2'];varcheck=function(a){returnarr.every(function(x){varstring='';string+=a+x;try{returneval(string);}catch(e){returnfalse;}});};console.log(check('

javascript - eval 和 setTimeout 执行字符串代码的区别

我知道eval和setTimeout都可以接受字符串作为(1st)参数,而且我知道我最好不要使用它。我只是好奇为什么会有区别:!function(){varfoo=123;eval("alert(foo)");}();!function(){varfoo=123;setTimeout("alert(foo)",0);}();第一个可以,第二个会报错:fooisnotdefined他们是如何在幕后执行的? 最佳答案 参见referenceofsetTimeoutonMDN.Stringliteralsareevaluatedinthe