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