1

端末エミュレーターは Web ページに埋め込む必要があり、ユーザーは Web ページ アクセスによってサーバー上に作成された Java プログラムをコンパイルして実行する必要があります。ターミナルでプログラムをコンパイルして実行したい。クライアントは、アプリケーション ソフトウェアをインストールする必要はありません。

4

2 に答える 2

3

次のことをお勧めします。

  • テキスト編集可能な div を作成し (contentEditable 属性を true に設定)、コンソールのようにスタイルを設定します。
  • 次に、その keypress イベントにバインドして入力を監視します。入力すると、入力した内容を実行するサーバーサイド スクリプトを ajax 要求します。たとえば、php の exec() を使用して、その戻り値を出力します。
  • サーバー側スクリプトの応答を div に追加し、繰り返します。

ただし、ユーザーに対してコンソールを開くときは十分に注意する必要があります。関数をすべての端末コマンドの先頭に明示的に追加することで、端末の機能をさらに制限できます。たとえば<?php echo exec('git '.$_GET['cmdtxt']); ?>、git が確実に呼び出されるようにする方法の 1 つですが、2 番目のコマンドを実行する可能性があるため、依然として脆弱です。セキュリティのニーズが何であるかを把握し、適切に検証できると確信しています。

これがあいまいに思える場合、それはあなたの質問があまり具体的ではないからです。これはあなたが探していた答えですか?お知らせ下さい :)

于 2013-02-06T05:08:17.297 に答える
1

まず、結果を表示するための div とコマンド用のテキストエリアを作成できます。テキストエリアのキープレスを確認し、ユーザーが Enter キーを押したときに 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 に答える