如何访问客户端网页中的服务器端终端



必须在网页中嵌入终端模拟器,用户必须在其中编译并运行通过网页访问在服务器上创建的java程序。我想在终端中编译并运行该程序。客户端不需要安装任何应用程序软件。

我建议如下:

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

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

如果这看起来很模糊,那只是因为你的问题不太具体。这就是你想要的答案吗?让我知道:)

首先,您可以创建一个用于显示结果的div和一个用于命令的文本区域。检查文本区域的按键情况,并在用户按下回车键时使用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));

希望这能帮助到你。

相关内容

最新更新