Câu trả lời:
Không thực sự, không. Đó là mẹ của tất cả các lỗ hổng bảo mật. Bạn đang hỏi liệu bạn có thể thiết lập một trang web thực thi các lệnh tùy ý trên máy của khách hàng không. Điều gì xảy ra nếu tôi thiết lập một trang web chạy lệnh này:
rm -rf ~/
Điều đó sẽ xóa tất cả các tập tin trong của bạn $HOME
. Trên thực tế, gần đây đã có một sự náo động khi một lỗi được phát hiện cho phép điều này xảy ra. Một trong những vectơ tấn công có thể là lừa khách hàng (máy tính B trong trường hợp của bạn) chạy lệnh bash.
Vì vậy, không, bạn không thể thực thi mã tùy ý trên máy cục bộ của mình thông qua trình duyệt web. Không phải không có cách nào đó đăng nhập đầu tiên. Bạn có thể chạy JavaScript hoặc các lệnh ngôn ngữ tương tự nhưng chúng sẽ không có quyền truy cập vào phiên người dùng của bạn.
Nói chung, bạn không thể làm điều đó, nhưng trong một môi trường xác định, nơi bạn có thể điều khiển máy khách B, bạn có thể đề xuất rằng máy B chạy dịch vụ setroot, ví dụ bạn có thể tự viết bằng nodejs hoặc golang và nói chuyện với nó dịch vụ khi bạn nhận được sự kiện. Nhưng trong mọi trường hợp, bạn không có bất kỳ cơ hội nào (hoặc ít nhất là bạn sẽ không bao giờ có cơ hội) nếu bạn không cài đặt một số dịch vụ bổ sung trên máy B.
run("whatever command on machine B");
?
Tôi giải quyết nó bằng máy chủ nodeJS. (không sạch / mã cuối cùng nhưng nó hoạt động)
Máy tính A: (máy chủ)
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);" />
Tệp B: (máy khách) được gọi là server.js
ans được thực thi vớinodejs 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 có thể thay đổi nội dung của các tệp văn bản qua trình duyệt chẳng hạn trong /var/www/.../folder/mytextfie.txt Bạn chỉ phải lấy chuỗi từ tệp đó, whitch có thể là lệnh hoặc thậm chí là lệnh để bắt đầu tệp tập lệnh .
một cronjob có thể chạy để kiểm tra xem văn bản có chứa bất kỳ tệp thực thi nào không.
#!/usr/bin/env bash
echo $(cat /var/www/.../folder/commandsperline.txt)
#or
while read line
do
echo "$(${line})"
done< "/var/www/.../folder/commandsperline.txt"
bối cảnh của textfile đó:
#!/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
Với te while loop, có thể thực thi các lệnh từ tệp văn bản đó.
Vâng .. nó có thể với neutinojs .
Bạn có thể sử dụng Neutralino.os.runCommand()
. Nhưng trong kịch bản của bạn, chế độ đám mây Neutralino có thể được sử dụng.