Web复制体系结构

2024-04-25 04:35:34 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 模块代码用户服务器web客户机环境linter
1条回答
网友
1楼 · 发布于 2024-04-25 04:35:34

使用一些好的HTTP服务器库,比如libonion。一定要很好地理解HTTP。你知道吗

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

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

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

如果你还没有读过的话,请阅读SICPDragon BookLisp in Small PiecesProgramming language pragmaticsGC handbook和这个blog article,在概念上与that one非常相关(但术语和方法不同,而且间接相关)。你知道吗

I want to make web REPL for my custom interpreter.

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

另见this。你知道吗

相关问题 更多 >