代码之家  ›  专栏  ›  技术社区  ›  PleaseStand

用JavaScript实现的简单、安全的脚本语言?[关闭]

  •  5
  • PleaseStand  · 技术社区  · 15 年前

    我想实现一种脚本语言,以帮助在公共wiki上部分自动化某些任务。我不能安装 Google Caja 在服务器上或者修改wiki软件本身,但是我可以安装JavaScript代码用于客户端执行。因为我的目的是允许普通用户创建和发布脚本,所以使用JavaScript本身是不安全的,可能会导致帐户泄露。

    这样的脚本语言实现是否存在,或者如果不存在,是否相对容易创建?我的重点是简化文本处理、Ajax请求和实现。

    下面是一个脚本需要执行的示例任务,取自 Wikipedia's procedure for requesting article deletion :

    1. 获取该页的源代码,在顶部添加删除通知,并保存新文本。
    2. 获取编辑页面的用户列表,并通知第一个用户(再次通过编辑特定页面)他创建的页面即将被删除。
    3 回复  |  直到 14 年前
        1
  •  3
  •   slebetman    9 年前

    下面是Tcl在javascript中的实现: Tcl in Javascript .

    这是消息来源: tcl.js

    下面是在浏览器中实现实时控制台的代码: A little tcl.js console

    Tcl可能不是您的理想选择,但是实现看起来相当简单。这主要是因为tcl本身就是一种如此简单的语言。你可以用它来了解如何实现变量和函数。

    提示:在tcl中,控制结构是函数,因此请查看内置函数的实现位置,以查看for、while和foreach的实现。

        2
  •  2
  •   PleaseStand    14 年前

    ADsafe 应该是JavaScript的一个安全子集。

    它由一个运行时库(大约20kb的minified)和一个验证器(包括在 JSLint ). 如果Crockford从许可证中删除“软件应用于善,而不是恶”,那么这两个组件都将是GPL兼容的开源程序。

    因为JSLint是一个JavaScript程序,所以它可以完全在web浏览器中验证用户脚本。这与用Java编写的Google Caja形成对比。

        3
  •  1
  •   Fordi    15 年前

    您可以只沙箱;也就是说,在几个关键变量中设置作用域,这样用户的代码就无法访问不安全的对象。

    var execSandboxedJS = function (jsCode) {
        var window = document.getElementById('myRootElement');
        var document = window;
        eval(jsCode);
    };