我是一名想要设计在线评审系统的学生。
我遇到了一个问题:为了保证服务器安全,我必须让程序无权读取或写入任何文件 该程序是另一个用户通过在线评判系统提交的。它不是服务器程序本身。
在线评判系统的用户提交他们的源代码,然后服务器程序编译并运行它。因此,服务器程序必须保证服务器的安全。
我的平台是Windows,我使用C ++进行编程。
有人能给我一些建议吗?
答案 0 :(得分:2)
您无法轻易阻止程序本身的操作,也无法验证该程序是非恶意程序。
您可以做什么:以具有有限(接近非)访问权限的用户身份运行程序。您的服务器程序需要成为该用户并执行它已编译的程序。您可能还希望使用该用户帐户来实际编译程序(在不太可能的情况下,有人知道如何利用您的编译器)。
以不同用户身份执行程序的Windows命令为:runas
。
答案 1 :(得分:0)
您可以更改文件和目录的权限,然后使用CreateProcessAsUser以具有有限(接近非)访问权限的用户身份运行用户提交的程序。