【问题标题】:how to access the server side terminal in a webpage at client side?如何在客户端的网页中访问服务器端终端?
【发布时间】:2013-01-21 05:01:52
【问题描述】:

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

【问题讨论】:

  • 这不是问题。请改写它,以便它要求特定的东西。

标签: javascript jquery java-compiler-api terminal-emulator


【解决方案1】:

我会推荐以下内容:

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

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

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

【讨论】:

    【解决方案2】:

    首先,您可以创建一个用于显示结果的 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));
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2016-01-03
      • 2016-11-16
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      相关资源
      最近更新 更多