ブラウザでテキストをクリックしてbashコマンドを実行する方法はありますか?
hsetroot
Webページはコンピュータ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.js
ansというファイルを実行します。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クラウドモードを使用できます。