Безопасное общение между веб-страницей и процессом без CGI?
Я работаю в компании A, компании-разработчике программного обеспечения, которая интегрирует нашу платформу в продукт компании B, компании, занимающейся аппаратным обеспечением. В продукте компании B запущен процесс компании B для управления устройством, и в этом процессе есть веб-сервер, который используется для обслуживания страниц настроек и тому подобного. Платформа моей компании работает в отдельном процессе на устройстве.
В рамках нашей интеграции меня попросили добавить веб-страницу, которая показала бы некоторую информацию из нашего процесса. Это было достаточно просто добавить, сгенерировав HTML-файл в нужном месте файловой системы из нашего процесса, который с радостью предоставит веб-сервер Компании B.
Теперь меня попросили добавить дополнительные функции на эту веб-страницу, которые включают некоторые интерактивные функции (кнопка, которая запускает тест из нашего процесса). Моя проблема в том, что я не нашел способа, чтобы кнопка на веб-странице вызывала событие в моем процессе. Самым простым решением является использование CGI на веб-сервере, и процесс компании B отправляет данные обратно в мой процесс всякий раз, когда он отправляется на POST. Мой босс много раз заявлял, что ему не нравится это решение, потому что он видит открытый CGI как дыру в безопасности и хочет полностью отключить все CGI на веб-сервере до выпуска продукта.
Поэтому, если я не могу общаться между процессом веб-сервера и моим процессом таким образом, мне нужно было бы найти другое решение. Я предпринял несколько попыток совершать ужасные хакерские вещи, такие как запись данных в файл через PHP, но я пока не нашел решения, которое работает.
Итак, вот мои два вопроса:
1) Есть ли какой-нибудь безопасный способ передать нажатие кнопки с веб-страницы процессу, имеющему доступ с правами root, для которого веб-серверу не требуется иметь доступный CGI?
2) Если нет, как я могу убедить своего начальника в том, что открытие единственного CGI, который отправляет данные в наш процесс и может вызывать только некоторые диагностические функции, является безопасным способом выполнить то, что он запрашивает?
1 ответ
Это все зависит от того, насколько хорошо я это сказал.
Если вы можете встроить веб-сервер в код компании B, вы, в основном, будете вызывать функции изнутри самого программного обеспечения, которые могут рассматриваться как большая дыра в безопасности, чем обычные вызовы cgi из отдельного процесса веб-сервера.
Вы могли бы рассмотреть Fast-CGI, увидеть вашу любимую энциклопедию, но в конце она оставит функцию cgi на лицевой стороне.
Если в систему не будет входить какой-либо конечный пользователь, я думаю, что вариант cgi будет наилучшей возможностью, если вы опубликуете только несколько необходимых функций, отключите все, что можете, внутри веб-сервера и добавите некоторый код для проверки входные данные, которые вы передаете в вызов cgi - возможно, используйте оболочку перед вызовом функции Company B, чтобы убедиться, что только те данные, которые будут исключены, могут быть переданы и что-либо еще (например, sql-инъекция, переполнение буфера и т. п.pp).) будет отклонено.
Если пользователь сможет войти в систему и сможет обойти эти вещи, тогда не будет никакой новой дыры в безопасности, система, вероятно, никогда не будет настолько безопасной, как хочет ваш босс... только мой 2c