当前位置:  开发笔记 > 编程语言 > 正文

验证字符串是否为有效的JavaScript

如何解决《验证字符串是否为有效的JavaScript》经验,为你挑选了1个好方法。

我正在创建一个能够证明XSS危险的网站.用户将尝试使用XSS漏洞执行JavaScript.

但是,我在确定JavaScript是否实际执行时遇到了问题,因此我可以记录用户是否成功.我将在node.js服务器上运行这些检查.

我最初打算eval在用户成功的情况下运行包含JavaScript的部分,但是认为这样做会太危险,因为它会在服务器端运行,并且可能会使服务器被利用.

有没有办法使用JavaScript来验证字符串是否是运行eval以外的有效JavaScript?或者有没有办法在eval不使我的服务器面临风险的情况下运行?



1> go-oleg..:

您可以使用esprima javascript解析器来查看该字符串是否是有效的JavaScript语法.

安装使用npm install esprima.

使用:

var esprima = require('esprima');

var userStringToTest = 'var a = 10;';

var isValid = isValidJs(userStringToTest);

if(isValid) {
  console.log('its valid!');
}
else {
  console.log('its NOT valid!');
}

function isValidJs(testString) {
  var isValid = true;
  try {
    esprima.parse(testString);
  }
  catch(e) {
    isValid = false;
  }
  return isValid;
}

正如@FelixKing在他的评论中指出的那样,这当然不会检测运行时错误.但是对于您的用例,听起来您应该测试语法错误而不是运行时错误,因为这样更严格,并且实际上不应该是有效的javascript语法.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有