Coo*_*ies 1 javascript syntax eval node.js
想象一下,我接受用户的一段代码,想要检查给定的字符串是否是有效的JS?仅从语法角度来看.
function checkCode(x){
// Logic
}
// returns a boolean, whether 'x' is syntactically right or wrong.
Run Code Online (Sandbox Code Playgroud)
我不想要解决方案eval
,因为当给定的代码'x'在语法错误时整个nodejs进程都会遇到语法错误.
要检查字符串是否包含语法上有效的JavaScript而不执行它(这将是一个非常糟糕的主意),您不需要库,您可以使用您在JS引擎中已有的解析器:
try {
new Function(yourString);
// yourString contains syntactically correct JavaScript
} catch(syntaxError) {
// There's an error, you can even display the error to the user
}
Run Code Online (Sandbox Code Playgroud)
当然这可以在服务器端完成.
不要使用eval
它与将服务器的控制权交给公共互联网完全相同.任何人都可以对您的服务器做任何事情 - 删除文件,泄漏文件,发送垃圾邮件等等.令我感到震惊的是,当我注意到它时,答案已收到3个赞成票.
只需使用像esprima这样的Javascript解析器http://esprima.org/
这是一个语法验证器示例,它甚至可以收集多个错误:https://github.com/ariya/esprima/blob/master/demo/validate.js#L21-L41
归档时间: |
|
查看次数: |
1290 次 |
最近记录: |