我的SpiderSense警告我,使用eval()解析传入的JSON是个坏主意。我只是想知道JSON.parse()-我认为它是JavaScript的一部分,而不是特定于浏览器的函数-是否更安全。 最佳答案 如果使用eval,您更容易受到攻击:JSON是Javascript的子集,而json.parse只解析JSON,而eval会对所有JS表达式敞开大门。 关于javascript-JSON.parse与eval(),我们在StackOverflow上找到一个类似的问题:
我的SpiderSense警告我,使用eval()解析传入的JSON是个坏主意。我只是想知道JSON.parse()-我认为它是JavaScript的一部分,而不是特定于浏览器的函数-是否更安全。 最佳答案 如果使用eval,您更容易受到攻击:JSON是Javascript的子集,而json.parse只解析JSON,而eval会对所有JS表达式敞开大门。 关于javascript-JSON.parse与eval(),我们在StackOverflow上找到一个类似的问题:
我遇到了一些代码的情况,其中eval()是一种可能的解决方案。现在,我以前从未使用过eval(),但是,我发现了大量关于它可能导致的潜在危险的信息。也就是说,我对使用它非常谨慎。我的情况是我有用户给出的输入:datamap=input('Providesomedatahere:')datamap需要是字典。我四处搜索,发现eval()可以解决这个问题。我认为我可以在尝试使用数据之前检查输入的类型,这将是一种可行的安全预防措施。datamap=eval(input('Providesomedatahere:')ifnotisinstance(datamap,dict):return我通读
我遇到了一些代码的情况,其中eval()是一种可能的解决方案。现在,我以前从未使用过eval(),但是,我发现了大量关于它可能导致的潜在危险的信息。也就是说,我对使用它非常谨慎。我的情况是我有用户给出的输入:datamap=input('Providesomedatahere:')datamap需要是字典。我四处搜索,发现eval()可以解决这个问题。我认为我可以在尝试使用数据之前检查输入的类型,这将是一种可行的安全预防措施。datamap=eval(input('Providesomedatahere:')ifnotisinstance(datamap,dict):return我通读
一次又一次,我使用eval在StackOverflow上看到Bash答案并且答案被抨击,双关语,因为使用了这种“邪恶”的结构。为什么是eval这么邪恶?如eval不能安全使用,应该用什么代替? 最佳答案 这个问题远不止表面上的问题。我们将从显而易见的开始:eval有可能执行“脏”数据。脏数据是任何没有被重写为安全使用情况-XYZ的数据;在我们的例子中,它是任何没有被格式化以便可以安全评估的字符串。乍一看,清理数据似乎很容易。假设我们抛出一个选项列表,bash已经提供了一种很好的方法来清理单个元素,以及另一种将整个数组清理为单个字符串
一次又一次,我使用eval在StackOverflow上看到Bash答案并且答案被抨击,双关语,因为使用了这种“邪恶”的结构。为什么是eval这么邪恶?如eval不能安全使用,应该用什么代替? 最佳答案 这个问题远不止表面上的问题。我们将从显而易见的开始:eval有可能执行“脏”数据。脏数据是任何没有被重写为安全使用情况-XYZ的数据;在我们的例子中,它是任何没有被格式化以便可以安全评估的字符串。乍一看,清理数据似乎很容易。假设我们抛出一个选项列表,bash已经提供了一种很好的方法来清理单个元素,以及另一种将整个数组清理为单个字符串
看完Bashmanpages和关于thispost,我仍然无法理解eval命令的确切作用以及它的典型用途。例如,如果我们这样做:$set--onetwothree#Sets$1$2$3$echo$1one$n=1$echo${$n}##Firstattempttoecho$1usingbracketsfailsbash:${$n}:badsubstitution$echo$($n)##Secondattempttoecho$1usingparenthesesfailsbash:1:commandnotfound$evalecho\${$n}##Thirdattempttoecho$1u
看完Bashmanpages和关于thispost,我仍然无法理解eval命令的确切作用以及它的典型用途。例如,如果我们这样做:$set--onetwothree#Sets$1$2$3$echo$1one$n=1$echo${$n}##Firstattempttoecho$1usingbracketsfailsbash:${$n}:badsubstitution$echo$($n)##Secondattempttoecho$1usingparenthesesfailsbash:1:commandnotfound$evalecho\${$n}##Thirdattempttoecho$1u
我有如下字符串:Stringstr="4*5";现在我必须使用字符串来获取20的结果。我知道在其他一些语言中,eval()函数可以做到这一点。我如何在Java中做到这一点? 最佳答案 您可以使用ScriptEngine类并将其评估为Javascript字符串。ScriptEngineManagermanager=newScriptEngineManager();ScriptEngineengine=manager.getEngineByName("js");Objectresult=engine.eval("4*5");可能有更好的
我有如下字符串:Stringstr="4*5";现在我必须使用字符串来获取20的结果。我知道在其他一些语言中,eval()函数可以做到这一点。我如何在Java中做到这一点? 最佳答案 您可以使用ScriptEngine类并将其评估为Javascript字符串。ScriptEngineManagermanager=newScriptEngineManager();ScriptEngineengine=manager.getEngineByName("js");Objectresult=engine.eval("4*5");可能有更好的