dyonis
@dyonis
Web разработчик

Как безопасно выполнить команду на другом сервере?

Есть задача выполнять одну команду на сервере, но с разными параметрами, которые формируются на другом сервере.
Есть подозрения, что exec($_GET['command']); плохая идея))
Вторая мысль - разбить параметры команды на составляющие и передавать отдельно, потом экранировать, собирать в команду и тогда выполнять.

При этом, допускается вероятность взлома или открытых исходников первого.
Задача в том, чтобы злоумышленик, зная исходный код принимающего скрипта не смог выполнить на принимающем сервере ничего кроме изначально исполняемой команды.

Вопроса два:
1) Если разбивать на отдельные параметры, то что нужно заэкранировать во входящих данных, чтобы не получилось инъекции (завершаем команду, например | этим символом и пишем в продолжение что угодно)
2) Может быть есть альтернативный способ безопасно выполнять команды с одного сервера на другом? (Сертификаты, ключи или прочая магия)
  • Вопрос задан
  • 232 просмотра
Решения вопроса 1
t-alexashka
@t-alexashka
Сразу пишу legacy код
я бы использовал фишку с чек-суммой строки, как при платежах. открытый код команды (можно зашить в base64) и отдельной переменной хеш. а на принимающей стороне смотреть уже верный хеш иль нет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
zorca
@zorca
Можно формировать команду на первом сервере и запускать ее целиком через ssh, авторизуясь при помощи ключа.
Ответ написан
VELIK505
@VELIK505
Руководитель департамента profitcentr.com
Серваки соединены в одну локаль?
ЕСли да то по ssh.
Вот например у меня крон задание висит с одного сервака на другой:
@reboot ssh 192.168.1.1 'mysqladmin flush-hosts -pkWz46ezyRc' >/dev/null 2>&1
где 192.168.1.1 - локальный айпи другого сервака где выполнить команду mysqladmin flush-hosts
Да даже если не соединены то точно так же с указанием пароля и тд. И на том серваке открыть доступ с айпи другого сервера для ssh
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы