Python Web repl体系结构

Python Web repl体系结构,python,web,containers,backend,read-eval-print-loop,Python,Web,Containers,Backend,Read Eval Print Loop,我想为我的自定义解释器制作web REPL。让我解释一下我的想法。当用户在浏览器中编写代码,然后单击“评估”按钮时,如果OK代码通过ajax发送到服务器,代码将通过JS编写的linter和validator(validator和linter将作为单独的模块)。然后在服务器上为代码评估创建单独的环境。对代码进行评估后,结果返回broswer。所以,我不知道的是,如何以及使用什么工具创建用于客户机代码评估的独立环境。若这是正确的,我的问题是:我应该在服务器上做什么来安全地运行客户机代码?我想是和主操

我想为我的自定义解释器制作web REPL。让我解释一下我的想法。当用户在浏览器中编写代码,然后单击“评估”按钮时,如果OK代码通过ajax发送到服务器,代码将通过JS编写的linter和validator(validator和linter将作为单独的模块)。然后在服务器上为代码评估创建单独的环境。对代码进行评估后,结果返回broswer。所以,我不知道的是,如何以及使用什么工具创建用于客户机代码评估的独立环境。若这是正确的,我的问题是:我应该在服务器上做什么来安全地运行客户机代码?我想是和主操作系统分开的。可能docker能帮上忙吗?

使用一些好的HTTP服务器库,比如。一定要理解清楚

即使您有JavaScript中的客户端验证,也不要信任它,在服务器端重复验证。恶意用户可以发送直接HTTP请求(在AJAX之外)

使用会话和cookie来识别(在服务器中)各种客户端浏览器,并为它们各自保留一个单独的环境(用于服务器端解释器)。实现您的可重入解释器时要考虑(会话和环境的)隔离

容器化(使用docker)是一种额外的安全措施,但即使没有安全措施,也要将服务器端代码设计为安全的(所以要检查那里的所有内容)

如果您还没有阅读过,请阅读,、和这个,在概念上非常相关(但使用非常不同的术语和方法,并且间接相关)

我想为我的自定义解释器制作web REPL

然后你甚至可以从20世纪80年代(以及相关的,甚至更古老的,一个)获得更多的灵感。我的书解释了更多的方式和原因,但你需要从它的标题中抽象出来,跳过它的前几页,这是欧洲官僚机构所要求的。我个人对Mentor和Centaur的看法是,那里描述的想法比他们的时代早了25年,而且,考虑到当前计算机的能力(比20世纪80年代好1000倍),这些旧想法值得复兴。我认为,这些想法在实用和实践上失败的一个可能的主要原因是,20世纪80年代的工作站缺乏计算机能力


另请参见。

您的自定义程序语言是什么?您是否指定了它(语法和语义)?您的自定义解释器是一些自由软件吗?只是简单的lisp解释器还是Scheme?源代码的URL是什么?你用什么编程语言编写你的解释器?lisp)我用python写的,我只是在学习,代码不好,我想还有很多事情要做。但是如果你愿意,你可以做一些评论来帮助我。注意我刚才是如何改进我的回答的谢谢,我停止了朗格理论,但仍然可能阅读你推荐的内容,可能会得到一些启发:)而且我的整个事情都是从SICP开始的。