我正在开发一个Web应用程序来教授编程概念。网页上有关于编程概念的一些文本,然后让用户在文本编辑器窗口中键入JavaScript代码来尝试解决编程问题。当用户单击“提交”时,我会分析他们键入的文本以查看他们是否已经解决了问题。例如,我要求他们“编写一个名为
f
的函数,将其参数加三”。
以下是我分析用户文本的过程:
- 使用严格设置在文本上运行JSLint,特别是不假定浏览器或控制台功能。
- 如果有任何错误,请显示错误并停止。
eval(usertext);
- 循环遍历传递任务的条件
eval(condition)
。 一个示例条件是"f(1)===4"
。 条件来自可信源。 - 显示通过/未通过的条件。
我的问题:这足以防止安全问题吗? 我还能做什么来保持警惕? 有更好的方法可以实现我的需求吗?
如果相关,我的应用程序在具有Python后端的Google App Engine上,使用JQuery,具有单独的用户帐户。