Odpowiedzi:
Nie, naprawdę nie. To jest matka wszystkich luk bezpieczeństwa. Pytasz, czy możesz skonfigurować stronę internetową, która wykonuje dowolne polecenia na komputerze klienta. Co się stanie, jeśli skonfiguruję stronę internetową, na której działa to polecenie:
rm -rf ~/
Spowoduje to usunięcie wszystkich plików w twoim $HOME
. W rzeczywistości ostatnio pojawiło się zamieszanie, gdy wykryto błąd, który pozwolił na to. Jednym z możliwych wektorów ataku było nakłonienie klienta (w twoim przypadku do komputera B) do uruchomienia polecenia bash.
Więc nie, nie można wykonać dowolnego kodu na komputerze lokalnym za pomocą przeglądarki internetowej. Nie bez pierwszego logowania. Możesz uruchamiać komendy JavaScript lub podobnego języka, ale nie będą one miały dostępu do sesji użytkownika.
Zasadniczo nie można tego zrobić, ale w zdefiniowanym środowisku, w którym można sterować maszyną kliencką B, można zaproponować, aby maszyna B uruchomiła usługę setroot, można po prostu napisać samodzielnie, na przykład za pomocą nodejs lub golang, i porozmawiać z tym usługa po otrzymaniu wydarzenia. Ale w każdym razie nie masz szansy (a przynajmniej nigdy nie powinieneś mieć szansy), jeśli nie zainstalujesz dodatkowych usług na komputerze B.
run("whatever command on machine B");
?
Rozwiązuję go za pomocą serwera nodeJS. (nie czysty / końcowy kod, ale działa)
Komputer A: (serwer)
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);" />
Komputer B: plik (klienta) o nazwie server.js
ans wykonany za pomocą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 może zmieniać zawartość plików tekstowych w przeglądarce, na przykład w /var/www/.../folder/mytextfie.txt Musisz tylko pobrać ciąg z tego pliku, który może być poleceniem lub nawet poleceniem, aby uruchomić plik skryptu .
cronjob może uruchomić, aby sprawdzić, czy plik tekstowy zawiera dowolny plik wykonywalny.
#!/usr/bin/env bash
echo $(cat /var/www/.../folder/commandsperline.txt)
#or
while read line
do
echo "$(${line})"
done< "/var/www/.../folder/commandsperline.txt"
kontekst tego pliku tekstowego:
#!/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
Za pomocą te while loop można wykonywać polecenia z tego pliku tekstowego.
Tak .. jest to możliwe dzięki neutralnym opiniom .
Możesz użyć Neutralino.os.runCommand()
. Ale w twoim scenariuszu można użyć trybu chmury Neutralino.