Альтернатива пользовательским протоколам (схемы URI) - PullRequest
6 голосов
/ 12 октября 2019

Я широко использовал собственный протокол во всех наших внутренних приложениях, чтобы открывать любые типы документов (CAD, CAM, PDF и т. Д.), Открывать Проводник и выбирать определенный файл, а также запускать другие приложения.

Несколько лет назад я определил один myprotocol протокол, который выполняет C:\Windows\System32\wscript.exe, передавая имя моего VBScript и любой аргумент, который имеет каждый запрос. Первый аргумент, переданный сценарию, описывает тип действия (OpenDocument, ShowFileInFileExplorer, ExportBOM и т. Д.), Следующие аргументы передаются действию.

Все работало хорошо до прошлого годакогда wscript.exe перестал работать (подробности см. здесь ). Я исправил эту проблему, скопировав ее в wscript2.exe. Создание копии теперь является шагом в стандартной конфигурации всех наших компьютеров, а использование wscript2.exe теперь является официальной конфигурацией нашего пользовательского протокола. (Наша антивирусная служба поддержки не нашла ничего, что взаимодействует с wscript.exe).

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

  • Firefox нене вижу wscript2.exe. Если я щелкну ссылку настраиваемого протокола, затем нажму кнопку обзора и открою папку, я вижу только небольшое подмножество .exe файлов, которое включает в себя wscript.exe, но не включает wscript2.exe (я нене знаю, как недавно возникла эта проблема, потому что я лично не использую FireFox).
  • Firefox видит wscript.exe, но все равно не работает (такое же поведение, как описано в моем предыдущем посте, связанном выше)
  • Chrome работает с wscript2.exe, но теперь он всегда запрашивает подтверждение. Согласно этой статье это, кажется, новый подход, и вскоре все может измениться. Нажатие на окно подтверждения каждый раз является большим нет-нет с моими пользователями. Это замедлит многие рабочие процессы, требующие быстрого нажатия на сотни ссылок на странице, и, например, посмотрите на масштабирование приложения САПР до одной геометрии на большом чертеже.

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

Итак, вот вопрос: есть ли альтернатива использованию пользовательских протоколов?

Я не работаю над веб-приложением для общественного пользования. Мой собственный протокол требует файл VBScript, приложения, которые использует скрипт, и множество общих сетевых папок. Они используются только во внутренней сети, и компьютеры, которые их используют, настраиваются вручную.

Ответы [ 2 ]

1 голос
/ 19 октября 2019

Прежде всего, это очень рискованно, даже если это только во внутренней сети. Если компьютеры / пользователи / браузеры не заблокированы из Интернета, возможно, что кто-то угадает или узнает имя вашего протокола, отправляет ссылку кому-то в вашей компании и вызывает много проблем (возможно, и потери).

В любом случае ...

Поскольку вы управляете программным обеспечением на всех компьютерах, вы можете добавить мини-сервер на каждую машину, слушая только localhost, который просто вызывает ваш скрипт. Затем определите хост как secret.myprotocol, чтобы он указывал на этот сервер, например, localhost: 1234.

Просто чтобы немного уменьшить потенциальные проблемы, локальный сервер будет использовать только HTTPS с соответствующим сертификатом, HSTS и HPKP установлены на очень длительное время (поскольку вы управляете программным обеспечением, вы можете обновлять их при необходимости). Последние два, на случай, если кто-то попытается настроить тот же домен и по какой-либо причине переопределение хоста не будет работать, и пользователь в конечном итоге вызовет враждебный сервер.

Таким образом, ссылки должны будут измениться с *От 1014 * до https://secret.myprotocol/whatever.

Он вводит новую поверхность атаки («мини-сервер»), но должен быть достаточно простым для реализации, чтобы минимизировать размер этой поверхности :). «Мини-сервер» даже не обязательно должен быть настоящим www-сервером, простой сценарий, который может прослушивать сокет и вызывать wscript.exe (если вам не нужно передавать дополнительную информацию). Реальный сервер имеет больше кода, который может содержать ошибки, но также позволяет добавлять больше вещей, например, страницу «прохода», на которой отображается информация «Открытие документа X через 3 секунды ...» и кнопка «Отмена». Это также может потребовать какого-либо входа в сеанс (просто чтобы быть уверенным, что пользователь запрашивает действие, а не что-то еще).

0 голосов
/ 21 октября 2019

Заголовок этого сообщения в блоге говорит само за себя: Архитектура браузера: обзор связи между веб-приложениями .

В нем описывается список веб-адресов. -App Коммуникационные методы и ссылки на отдельные посты для некоторых из них.

Первым в списке является Протоколы приложений , которые я использую уже несколько лет, и он начал рушиться впоследний год или около того (отсюда и мой вопрос).

Пятый - Локальный веб-сервер , который описан ahwayakchih.

...