小编Nat*_*ead的帖子

如何安全地"评估"网页中的用户代码?

我正在开发一个webapp来教授编程概念.网页上有一些关于编程概念的文本,然后让用户在javascript代码中键入文本编辑器窗口以尝试回答编程问题.当用户点击"提交"时,我会分析他们输入的文本以查看他们是否已解决问题.例如,我要求他们"编写一个命名f为其参数添加三个的函数".

以下是我正在分析用户文本的内容:

  1. 使用严格设置在文本上运行JSLint,特别是不使用浏览器或控制台功能.
  2. 如果有任何错误,请显示错误并停止.
  3. eval(usertext);
  4. 循环通过赋值的条件,eval(condition).一个例子是"f(1)===4".条件来自可靠来源.
  5. 显示通过/失败的条件.

我的问题:这是否足以防止安全问题?我还能做些什么才能成为偏执狂?有没有更好的方法来做我想要的?

如果它是相关的我的应用程序是在使用Python后端的Google App Engine上,使用JQuery,具有单独的用户帐户.

javascript security eval jslint

11
推荐指数
1
解决办法
2635
查看次数

如何在Docker容器中的linux perf工具中获得调试符号?

我正在使用基于"ubuntu"标签的Docker容器,并且无法获得linux perf工具来显示调试符号.

这是我正在做的来证明这个问题.

首先,我启动一个容器,这里有一个交互式shell.

$ docker run -t -i ubuntu:14.04 /bin/bash
Run Code Online (Sandbox Code Playgroud)

然后从容器提示我安装linux perf工具.

$ apt-get update
$ apt-get install -y linux-tools-common linux-tools-generic linux-tools-`uname -r`
Run Code Online (Sandbox Code Playgroud)

我现在可以使用该perf工具了.我的内核是3.16.0-77-generic.

现在我将安装gcc,编译测试程序,并尝试在其下运行它perf record.

$ apt-get install -y gcc
Run Code Online (Sandbox Code Playgroud)

我将测试程序粘贴到test.c:

#include <stdio.h>

int function(int i) {
    int j;
    for(j = 2; j <= i / 2; j++) {
        if (i % j == 0) {
            return 0;
        }
    }
    return 1;
}

int main() {
    int i; …
Run Code Online (Sandbox Code Playgroud)

linux linux-kernel perf docker

8
推荐指数
2
解决办法
6075
查看次数

标签 统计

docker ×1

eval ×1

javascript ×1

jslint ×1

linux ×1

linux-kernel ×1

perf ×1

security ×1