我们想让我们的用户能够在我们的应用程序中执行自己创建的JavaScript代码。为此,我们需要使用eval来评估代码。为了将所有安全问题降至最低(如果不是零),我们的想法是防止在代码中使用任何window或document函数。所以没有XMLHttpRequest或类似的东西。这是代码:functionsecure_eval(s){varret;(function(){varcopyXMLHttpRequest=XMLHttpRequest;//saveorginalfunctionincopyXMLHttpRequest=undefined;//makeorignalfunction
在WP8上,如果我执行(1):Microsoft.Phone.WebBrowserwb;wb.InvokeScript("eval","window.external.notify('abc');");它抛出“调用目标返回错误”,未知错误,hresult80020101。但是(2)wb.InvokeScript("eval","window.alert('abc');");工作正常,并显示消息框。和(3)wb.InvokeScript("eval","(function(){window.external.notify('abc');})();");也可以正常工作。我的问题是,阻止ev
我有JSON数据,我正在使用filter搜索:myJsonData.filter(function(entry){return(entry.type==='model'||entry.type==='photographer');});现在我没有在返回后指定这些条件,而是创建了一个类似的字符串(因为我想要一个预先创建的搜索条件列表),然后使用eval()所以:myJsonData.filter(function(){returneval(stringToSearch);});这似乎有效。但是,我只想确认一下,这是正确的用法吗?这样做有什么风险/问题吗?我想灵活地进行任何类型的搜索,例如
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。什么是适用于iPad的优秀JavaScriptIDE,我不打算使用Ipad开发应用程序,但对于在旅途中进行编辑非常有用。
我看到很多关于如何像这样动态添加代码的建议(source):varmyScript=document.createElement("script");myScript.setAttribute("type","text/javascript");myScript.innerHTML+='alert("Hello");';document.body.appendChild(myScript);相对于eval像这样eval('alert("Hello");');人们提示eval的性能下降和安全问题,但我无法想象如何添加标签会更快或更安全。编辑人们想知道为什么我要评估像alert("Hell
有什么理由吗eval("(function(x){returnx*x;})")不使用IE9返回函数? 最佳答案 这是JScript解析器中的一个错误。它不应该在IE9中发生,除非您处于兼容或怪癖模式。IE8将您的函数表达式误解为函数声明,导致它无法返回任何内容。之前在thisquestion中提到过.您可以使用其他典型方法之一解决它,以消除JScript解析器对什么构成表达式与语句的混淆,例如:eval('[function(x){returnx*x;}][0]')eval('0?0:function(x){returnx*x;}'
如果我没记错的话,eval会执行给定字符串中的有效代码eval("alert('hey')");和setTimeout("alert('hey')",1000);做同样的事情,只是用了一个计时器。settimeout和eval一样有风险吗? 最佳答案 我想说你听到了同样的反对意见。setTimeout(带有字符串而不是函数参数)与eval几乎相同。如果可能的话,setTimeout(function(){alert("hey");},1000); 关于javascript-为什么人们说j
有谁知道可以让您编写javascript的程序吗?然后执行它-一直与浏览器无关?我不想要DOM操作,相当于Console.Write对我来说就足够了。我正在考虑与DrScheme类似的东西-漂亮的大代码编辑窗口,让你运行它,停止它。虽然所有其他功能(调试等)都是邪恶的,但它们并不重要。(来源:plt-scheme.org) 最佳答案 我最近一直在使用MozillaRhino做一些JavaScript工作(基本上是编写ApachePOI库的脚本),这是一个用Java编写的JavaScript解释器(您也可以将JavaScript脚本编
我知道JSON.parse()可以防止攻击者将javascript注入(inject)到响应中,因为JSON解析器只是一个文本解析器,而不是脚本解析器,所以请不要关闭这是所有其他问题的重复谈谈那个。这是一个不同的问题。如果攻击者可以劫持您的Ajax调用并将javascript放入Ajax调用中,他们是否也有可能劫持您的实际网页并将任意javascript放入您的页面,从而完成完全相同的攻击?当然,使用JSON.parse()而不是eval()不会有任何损失(除非您的环境中还没有JSON解析器并且必须添加更多代码才能获得),但是在什么情况下如果您的网页由与您的ajax调用相同的主机提供服
我遇到了需要从服务器访问javascript对象的情况。服务器返回函数或对象的字符串名称,我将根据其他元数据对对象进行不同的评估。最初我正在评估(eval([string]))并且一切正常。最近我正在更新函数以不使用eval以确保安全安心,但我遇到了命名空间对象/函数的问题。具体来说,我尝试用window[name]替换eval([name])以通过全局对象的方括号语法访问对象vs评估。但是我遇到了命名空间对象的问题,例如:varstrObjName='namespace.serviceArea.function';//ifIdovarobj=eval(strObjName);//wo