javascript - 将 JavaScript 代码限制/验证到特定库

标签 javascript validation object

我有一个项目,用户可以在其中提交 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 等

但是,我认为我过于简单化了,并且想知道您对这是否是合理方法的想法。

谢谢。

最佳答案

您的问题有两个部分:

  1. 确保用户使用您的对象 X

您可以通过在测试中模拟对象并检查是否使用了相关对象方法来实现此目的。请参阅here Jasmine 是如何做到的

  • 限制用户访问某些 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);
    
  • 但是,这并不妨碍用户声明自己的东西、变量、函数等。

    关于javascript - 将 JavaScript 代码限制/验证到特定库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52965298/

    相关文章:

    java - 在链表中存储对象

    javascript - 将数组从 PHP 迭代传递到 JS

    javascript - 有没有办法在没有每个的情况下做到这一点?

    javascript - 如何设置每页列出的项目数并设置单击时选定的选项

    javascript - 更改页面后附加事件会怎样?

    validation - 没有颁发者证书的 OCSP 验证

    ruby-on-rails-3 - 如何在 Rails 3 中存储带有验证错误消息的额外数据?

    c++ - 使用 GTest 访问违规读取位置,无需任何复杂测试

    html - 我可以在列表项中使用 div 吗?

    javascript - Angular2 & Typescript - 类型上不存在属性名称