在这种情况下,用户将通过浏览器将他/她的C代码提交给我的服务器。 然后代码将在我的服务器上编译和执行,输出将发送给用户。
由于用户可以提交任何代码(包括病毒或其他故障代码)。我将不得不照顾这一点。
所以我的问题是,如何从这些代码中保护我的服务器?
答案 0 :(得分:4)
我不能用Windows回答你 - 我可以告诉你linux。
这是一个极其复杂的问题。你需要考虑:
我可以说这是一个长期项目,几周后你无法正确完成。
答案 1 :(得分:2)
您的问题可能等同于halting problem,可能没有防弹答案(在恶意 C 代码中考虑asm
,伪造函数指针,计算goto,缓冲区溢出会丢弃返回地址,dlsym
& dlopen
等。)
正如Shawn在他的评论中所提到的(指this question),你可以使用沙盒技术。 Alinsoar的answer向您展示了问题的复杂性。
答案 2 :(得分:1)
要考虑的其他问题:允许访客进程的权限:是否允许他打开套接字?如果是这样,你允许他进行什么交通?
如果您打开套接字,那么问题会变得更加复杂,因为他可以通过该套接字发起攻击......
答案 3 :(得分:0)
您可以考虑使用ideone API,某些移动设备软件会这样做(CodeToGo for example)