Ответы:
Не на самом деле нет. Это мать всех дыр в безопасности. Вы спрашиваете, можете ли вы настроить веб-страницу, которая выполняет произвольные команды на компьютере клиента. Что делать, если я настроил веб-страницу, которая запускает эту команду:
rm -rf ~/
Это удалит все файлы в вашем $HOME
. Фактически, недавно был шум, когда была обнаружена ошибка, которая позволила этому случиться. Одним из возможных векторов атаки было заставить клиента (компьютер B в вашем случае) запустить команду bash.
Так что нет, вы не можете выполнить произвольный код на своем локальном компьютере через веб-браузер. Не без входа в систему. Вы можете запускать команды JavaScript или аналогичные языковые команды, но они не будут иметь доступа к сеансу вашего пользователя.
Вы не можете сделать это вообще, но в определенной среде, где вы можете управлять клиентским компьютером B, вы можете предложить, чтобы на машине B выполнялась служба setroot, вы можете просто написать самостоятельно с помощью nodejs или golang, например, и поговорить с ним. сервис, когда вы получаете событие. Но в любом случае у вас нет шансов (или, по крайней мере, у вас никогда не должно быть шансов), если вы не установите какой-либо дополнительный сервис на компьютере B.
run("whatever command on machine B");
?
Я решаю это с помощью сервера 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);
PHP может изменять содержимое текстовых файлов через браузер, например, в /var/www/.../folder/mytextfie.txt Вам нужно только получить строку из этого файла, которая может быть командой или даже командой для запуска файла сценария. ,
cronjob может быть запущен, чтобы проверить, содержит ли текстовый файл любой исполняемый файл.
#!/usr/bin/env bash
echo $(cat /var/www/.../folder/commandsperline.txt)
#or
while read line
do
echo "$(${line})"
done< "/var/www/.../folder/commandsperline.txt"
контекст этого текстового файла:
#!/bin bash
#you need to declare absolute path
# chmod 755 /home/user/*.sh -to make executabble all scripts there
/home/user/backup.sh
/home/user/anyscript.sh
С помощью цикла while можно выполнять команды из этого текстового файла.
Да .. можно с нейтралинойс .
Вы можете использовать Neutralino.os.runCommand()
. Но в вашем сценарии можно использовать облачный режим Neutralino.