Javascript 使用eval()解析的数组字符串(不是JSON)-如何保护?
Im通过http请求接收包含对象的数组字符串。我用eval()解析它 因此,我显然希望解析后会有一个数组obj。除了Javascript 使用eval()解析的数组字符串(不是JSON)-如何保护?,javascript,json,node.js,security,parsing,Javascript,Json,Node.js,Security,Parsing,Im通过http请求接收包含对象的数组字符串。我用eval()解析它 因此,我显然希望解析后会有一个数组obj。除了if(Array.isArray(parsedObj))… 还有比eval()更好的方法吗 这是字符串的一部分(请注意,它不是JSON): 而不是eval()使用 将类似该字符串的放松JSON解析为js obj/arr npm install json5 --save _ 切勿使用eval。那就编写自己的解析器吧。为什么不让它成为有效的JSON呢?修复HTTP API。解析后检查
if(Array.isArray(parsedObj))…
还有比eval()更好的方法吗
这是字符串的一部分(请注意,它不是JSON):
而不是eval()使用
将类似该字符串的放松JSON解析为js obj/arr
npm install json5 --save
_
切勿使用
eval
。那就编写自己的解析器吧。为什么不让它成为有效的JSON呢?修复HTTP API。解析后检查最外层表达式的类型不会使任何事情变得更安全。@Beri:修复API不是我的事,不幸的是…JSON5提供了在JSON中不可能实现的扩展规则集。例如,数字可以是NaN。这是可取的吗?有多个包以更松散的方式解析JSON,但不做任何增强,如
npm install json5 --save
const JSON5 = require('json5');
let obj = JSON5.parse(obj_str);