Webページでクリックイベントが発生した場合のシェルコマンドの実行

Webページでクリックイベントが発生した場合のシェルコマンドの実行

ブラウザでテキストをクリックしてbashコマンドを実行する方法はありますか?

hsetrootWebページはコンピュータAにあり、ブラウザはコンピュータBにあります。画像をクリックすると、壁紙を変更するなどのコードをコンピュータBで実行したいと思います。

答え1

正確ではありません。これがすべてのセキュリティ脆弱性の源です。クライアントコンピュータで任意のコマンドを実行するWebページを設定することが可能かどうかを尋ねています。このコマンドを実行するWebページを設定するとどうなりますか?

rm -rf ~/

実際、$HOME最近騒ぎが発生しました。エラーが検出されましたこれにより、これが発生する可能性があります。可能な攻撃ベクトルの一つbashコマンドを実行するようにクライアント(あなたのコンピュータB)をだます。

したがって、いいえ。 Webブラウザを介してローカルコンピュータで任意のコードを実行することはできません。最初にログインしない限り。 JavaScriptまたは同様の言語コマンドを実行できますが、ユーザーセッションにアクセスすることはできません。

答え2

NodeJSサーバーを使用してこの問題を解決しました。 (クリーン/最終コードではありませんが動作します)

コンピュータA:(サーバー)

function change_wallpaper(image){
    var objReq = new XMLHttpRequest();
    objReq.open("GET", "http://localhost:8888" + "?image=" + image, false);
    objReq.send(null);
}
<img src="./img/1.jpeg" onclick="change_wallpaper(this.src);" />
<img src="./img/2.jpeg" onclick="change_wallpaper(this.src);" />

コンピュータB:(クライアント)はserver.jsansというファイルを実行します。nodejs server.js

var http = require("http");
var sys = require('sys')
var exec = require('child_process').exec;
var url = require("url");

function onRequest(request, response) {
    var params = url.parse(request.url,true).query;
    function puts(error, stdout, stderr) {sys.puts(stdout)}
    exec("/usr/bin/feh --bg-center " + params.image, puts);
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Wallpaper');
}

http.createServer(onRequest).listen(8888);

答え3

通常、これを行うことはできませんが、クライアントシステムBを制御できる定義された環境では、システムBにsetrootサービスを実行するように提案できます。イベントを受けた時。しかし、とにかく、マシンBにいくつかの追加サービスをインストールしなければ可能性はありません(または少なくとも可能性があるべきではありません)。

答え4

うん…中立的

あなたはそれを使用することができますNeutralino.os.runCommand()。ただし、あなたのシナリオでは、Neutralinoクラウドモードを使用できます。

関連情報