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

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

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

  • Предотвращение событий с несколькими щелчками мыши
  • (ubuntu 16.04) Как обнаружить независимое от устройства событие вставки USB
  • Как поймать события монтирования в Linux?
  • Trace Linux Kernel, чтобы узнать, сколько байтов считывается с диска в операции ввода-вывода
  • Могу ли я остановить Linux от прослушивания USB-устройства ввода в качестве клавиатуры, но все-таки захватить события программой?
  • как запустить скрипт на события auditd?
  • `xdotool` не отправляет ключи
  • Захват ключевого ввода из устройства событий и его отображение (кнопка переключения сенсорной панели не отображается)
  • 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); 
    Linux и Unix - лучшая ОС в мире.