php - 从 PHP 安全地编译、运行和返回 C++ 程序的输出

标签 php c++ security

我正在制作一个程序,它将从 PHP 运行一个人的 C++ 代码。如何安全地编译、运行和返回 C++ 程序的输出?安全地,我的意思是如何在不让我的系统容易受到黑客攻击的情况下做到这一点?我想我只会使用 GCC 的 exec 命令来编译程序,然后使用 exec 运行程序。但是我怎样才能安全地做到这一点呢?

最佳答案

与非自定义服务器相比,这只是稍微高级一点的东西。最有可能的。因为大多数服务器提供商不会让您执行进程,即使他们肯定不会让您在那里安装 GCC 并在他们的机器上运行可能不安全的代码(执行进程,还记得吗?)...

我想有一天做这样的事情(带有多语言编译器的在线开发工具、沙箱、SVC...),但只是因为我有很多空间以及我普通计算机旁边的自定义服务器.

如果您有自定义服务器(假设它是 Linux,很可能是 LAMP):

  • 安装了 gcc 或更好的 g++
  • 安装虚拟机(例如 Bochs),以及任何 Linux(其他平台)的基本安装 - 这仅用于 C 和 D 步骤
  • 将文件放在某个临时位置
  • 使用 proc_open 使用列出的文件启动 g++,但请确保您以专用用户身份运行此程序 - 例如 gccuser - 一个没有权限的用户,但从存放文件的目录读取
  • A) 从 g++ 中读出输出(成功或错误/警告)
  • B) 让用户下载结果文件
  • C) 通过链接器放置结果文件,然后将该文件写入 VM 的 HDD - 然后运行它,您可以向用户显示输出
  • D)(最先进的)- 在 JavaScript/AS 中制作一个 GUI 有点东西(终端)来实时与正在运行的文件对话-添加一个时间限制...但这也意味着您需要多个 Bochs一次运行(更多用户)——这意味着你需要将一个 Bochs 复制到一个临时目录,连同一个空硬盘(只有操作系统),在那个硬盘上运行它,完成后——删除

proc_open - http://php.net/manual/en/function.proc-open.php

关于php - 从 PHP 安全地编译、运行和返回 C++ 程序的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115023/

相关文章:

c++ - 在 linux 中使用 win32 api?

c++ - 允许继承类使用相同的函数

c++ - 如何使用 libavcodec/ffmpeg 查找视频文件的持续时间

PHP 四舍五入到精度 2

php - 从其他类访问登录的 User 对象的最佳实践

php - 无法在 Ubuntu 16.04 上加载 PHP7 mongodb 驱动程序

javascript - window.opener 可靠吗?

svn - Subversion - 使用 SVNParentPath 时如何控制单个存储库的用户访问?

mysql - 在MySQL 5.x中,是否可以根据条件授予权限(不使用 View )?

php - Swift 2,上传base64图片到PHP