我希望建立一个基于Web的服务,让用户输入一些C代码,服务器将编译并运行该代码,然后返回结果。我知道,这是安全方面的噩梦。因此,也许我可以采用chroot或lxc等方法。在stackoverflow上有很多关于这些的好帖子。另一个选择是使用编程竞赛软件。
不过,我所做的并不是为了一般的编程目的。用户只能向几个存根函数添加代码,除此之外不能使用指针、数组或字符串。他们不应该能够打开/关闭/读取/写入文件、套接字或共享内存。他们甚至不能创建自己的函数。他们只能执行以下操作:
不过,我所做的并不是为了一般的编程目的。用户只能向几个存根函数添加代码,除此之外不能使用指针、数组或字符串。他们不应该能够打开/关闭/读取/写入文件、套接字或共享内存。他们甚至不能创建自己的函数。他们只能执行以下操作:
// style comments
/* */ style comments
declare variables of type int, double, float, int64_t, int32_t, uint64_t, uint32_t
for, while, do
+, -, *, /, % arithmetic operators ( * as dereference is NOT allowed )
( )
+, - unary operators
++, -- operators
math functions like sin, cos, abs, fabs, etc
a bunch of API functions that will exist
switch, case, break
{ }
if, else, ==, !=
=, +=, -=, *=, /=, etc
有没有一个工具可以用来检查给定的一段C代码,以确保它仅包含那些元素?
如果我找不到现有解决方案,我可以使用Antlr或类似的工具来自己设计。
os
模块来轻松地限制访问。 - msw[t for t in (1).__class__.__bases__[-1].__subclasses__() if t.__name__ == 'file'][0]('/etc/passwd').read()
正常工作? - Joker_vD