1

终端仿真器必须嵌入网页中,用户必须在网页中编译和运行通过网页访问在服务器上创建的 java 程序。我想在终端中编译和运行程序。客户端无需安装任何应用软件。

4

2 回答 2

3

我会推荐以下内容:

  • 制作一个文本可编辑的 div(将 contentEditable 属性设置为 true)并将其设置为看起来像控制台。
  • 然后绑定到它的按键事件以监视输入,在该输入上您 ajax 请求执行您键入的任何内容的服务器端脚本。例如使用 php 的 exec() 并输出它的返回值。
  • 将服务器端脚本的响应附加到 div,然后重复..

不过,在向用户打开控制台时,您应该非常小心。您可以通过在所有终端命令前显式添加一个函数来进一步限制终端的能力,例如<?php echo exec('git '.$_GET['cmdtxt']); ?>,这是确保调用 git 的一种方法,但它仍然容易受到攻击,因为您可能会执行第二个命令。我相信您可以弄清楚您的安全需求是什么并正确验证它们。

如果这看起来含糊不清,那只是因为您的问题不是太具体。这是您要寻找的答案吗?让我知道 :)

于 2013-02-06T05:08:17.297 回答
1

首先,您可以创建一个用于显示结果的 div 和一个用于命令的 textarea。检查文本区域的按键,并在用户按下回车时使用 AJAX 将命令发送到服务器。您可以设置它们的样式,使其看起来更像终端。

请注意,将控制台暴露给用户很容易被黑客入侵。始终检查用户输入以确保无法执行危险命令。

如何过滤命令的示例代码:

<?php
$cmd = $_POST['cmd'];
$allowed = array('ls','git','grep','...');//The allowed commands

foreach($allowed as $part){
    if(strpos($cmd,$part) === false){
        echo 'Command not recognized!';
    }
}

ob_start();
passthru($cmd);
$result = ob_end_clean();

echo json_encode(array('result'=>$result));

希望这可以帮到你。

于 2013-02-06T07:52:19.303 回答