Відповіді:
Не дуже, ні. Це матір усіх дірок у безпеці. Ви запитуєте, чи можете ви створити веб-сторінку, яка виконує довільні команди на комп'ютері клієнта. Що робити, якщо я налаштував веб-сторінку, яка виконує цю команду:
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
З циклом te while можна виконувати команди з цього текстового файлу.
Так .. можна з нейтраліній .
Можна використовувати Neutralino.os.runCommand()
. Але у вашому сценарії може використовуватися хмарний режим Neutralino.