我正在开发一个webapp来教授编程概念.网页上有一些关于编程概念的文本,然后让用户在javascript代码中键入文本编辑器窗口以尝试回答编程问题.当用户点击"提交"时,我会分析他们输入的文本以查看他们是否已解决问题.例如,我要求他们"编写一个命名f
为其参数添加三个的函数".
以下是我正在分析用户文本的内容:
eval(usertext);
eval(condition)
.一个例子是"f(1)===4"
.条件来自可靠来源.我的问题:这是否足以防止安全问题?我还能做些什么才能成为偏执狂?有没有更好的方法来做我想要的?
如果它是相关的我的应用程序是在使用Python后端的Google App Engine上,使用JQuery,具有单独的用户帐户.
我正在使用基于"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)