我有一个项目,用户可以在其中提交JavaScript代码。但是,我想检查一下,在提交的代码中,仅使用了某些javascript对象的方法和属性。例如我的对象的名称是X,则应该只允许用户使用:
X.method1();
X.method2();
X.method3(X.propertyA);
if(X.booleanPropertyB)
{
X.method(X.propertyWOW);
}
不应允许他们创建新的变量或使用JavaScript对象的属性或方法,例如文档,窗口或导航器。
根据这些规则验证脚本的好方法是什么?在JavaScript内部或通过服务器端验证器,例如用Java编写。
到目前为止,我的想法是使用服务器端验证器,并检查每个分号以及每个大括号后的第一个非空白字符是否为“ X”。或保留字,例如if,else,while,for等
但是,我认为我过于简化了它,并且想知道您对这是否是一种合理方法的想法。
谢谢。
答案 0 :(得分:1)
您的问题分为两个部分:
您可以通过在测试中模拟对象并检查是否使用了相关的对象方法来实现此目的。参见here用茉莉花怎么做
限制用户访问某些API 实现它的简单方法是在闭包内部运行用户代码。例如
;(function(window, document, console, eval, alert, setTimeout, setInterval){
// run user code here
// window, document etc. are inaccesible and null in this context
})(null, null, null, null, null, null);
但是,这不会阻止用户声明自己的内容,var,函数等。