Выполнение команды оболочки при событии клика на веб-странице

Есть ли способ выполнить команду bash, когда я нажимаю на текст в браузере?

Веб-страница находится на компьютере A, браузер находится на компьютере B: Я хочу выполнить код на компьютере B, например, hsetroot чтобы изменить обои при щелчке изображения.

3 Solutions collect form web for “Выполнение команды оболочки при событии клика на веб-странице”

Не на самом деле нет. Это мать всех дыр в безопасности. Вы спрашиваете, можете ли вы создать веб-страницу, которая выполняет произвольные команды на машине клиента. Что делать, если я настраиваю веб-страницу, которая выполняет эту команду:

 rm -rf ~/ 

Это приведет к удалению всех файлов в $HOME . Фактически, в последнее время возник шум, когда была обнаружена ошибка, которая позволила этому случиться. Одним из возможных векторов атаки был обман клиента (компьютер B в вашем случае) для запуска команды bash.

Нет, вы не можете выполнить произвольный код на своем локальном компьютере через веб-браузер. Не без чего-то вошел в первую очередь. Вы можете запускать команды JavaScript или аналогичные языки, но у них не будет доступа к сеансу пользователя.

Вы не можете этого делать вообще, но в определенной среде, где вы можете управлять клиентским компьютером B, вы можете предложить, чтобы машина B запускала службу setroot, вы можете просто написать самостоятельно с помощью nodejs или golang, например, и поговорить с этим когда вы получаете событие. Но в любом случае у вас нет шансов (или, по крайней мере, у вас никогда не будет шанса), если вы не установите дополнительную услугу на машине 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); 
Interesting Posts

Уменьшает ли производительность AppArmor?

Как искать файл на основе Дня недели

Судебно-медицинский анализ: найти все файлы, модифицированные вокруг известного

Создание программы в корзине

Как получить доступ на уровне пользователя к нажатию клавиш-модификаторов в консольном приложении?

Создание нескольких виртуальных хостов (Linux Mint 18.2)

CUPS & Raspbian – принтер включается, но не печатает

именование разделенных файлов с помощью команды split

Чтение и запись ZFS отображаются в выводе vmstat -p

Подключение локальной сети lxc к локальной сети

Не удается открыть начальную консоль на ARM S3C2440 с запуском utuLinux

Почему нам не нужно вводить пароль для установки программного обеспечения в магазине приложений на Deepin?

Эффективно скопировать вставку (kill / yanking) с emacs, запущенным в tmux на Mac OS X

Несколько вопросов о кодировке символов файловой системы в Linux

SMTP Auth – SASL на Dovecot, Postfix и CentOS 6.2 (и Open-Xchange)

Linux и Unix - лучшая ОС в мире.