jcsquire Ответов: 4

Как создать сборку, которая запускается одним щелчком мыши из браузера?


Я могу приблизиться: купив сертификат EV у Digicert, я могу скомпилировать свой код и поместить его в ссылку href на своем веб-сайте. Когда пользователь нажимает ссылку href, файл загружается. Второй щелчок по загруженному файлу запускает его, без дальнейших церемоний благодаря сертификату EV. Я хотел бы сократить два клика до одного, так как в конечном итоге я хотел бы, чтобы студенты выбирали среди нескольких десятков демонстраций для запуска.

Что я уже пробовал:

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

Есть ли на самом деле способ заставить браузер загрузить и автоматически запустить код, или я лаю не на то дерево - это свойство браузера и поэтому неразрешимо (поскольку у каждого пользователя будут разные настройки браузера) - действительно ли мне нужно перепрограммировать вещи в JavaScript и встроить их в свои страницы?

4 Ответов

Рейтинг:
19

jcsquire

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

Я думаю, что был бы какой-то вариант, позволяющий сделать то же самое в приложении C#, возможно, ограничив привилегии кода как "частично доверенный" вариант, зарезервированный для неотражающего кода, который не имеет доступа к дискам. Это действительно может быть невозможно сделать, но я не вижу, как такая программа с ограниченным доверием может быть мечтой автора вредоносных программ, чем файл .svg, который обеспечивает ту же функциональность, что и мои программы только для записи экрана.

Похоже, мне, возможно, придется отойти от C# и перекодировать все в JavaScript или .svg, которые обеспечивают функциональность, которую я ищу. Я просто предпочитаю писать сложный код на типобезопасном языке.


Richard MacCutchan

Как бы вы доказали, что ваше приложение является "частично доверенным", а не просто замаскированным вредоносным ПО?

Dave Kreskowiak

Формат SVG для векторной графики. Он нарисован самим браузером. Там нет ничего, чтобы действительно "выполнить". Он просто интерпретируется и рисуется в соответствии с данными в файле. Просто нарисовать что-то-это не серьезная угроза безопасности.

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

Раньше были такие вещи, как браузерные приложения WPF, Java, Silverlight, Flash и тому подобное. Эти дни закончились из-за проблем с безопасностью, не обязательно с кодом, загружаемым и запускаемым, но и с плагинами браузера, необходимыми для запуска этого кода.

Это была еще одна проблема с делать такие. Каждый браузер нуждался в плагине для запуска кода. Этот подход был оставлен в пользу веб-сборки. Поместите возможность выполнения кода непосредственно в браузер и выполняйте его только в защищенной среде песочницы в браузере. Хотя поддержка этого в основном реализована в современных браузерах, инструментарий для создания веб-сборок все еще незрел.

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

Рейтинг:
1

OriginalGriff

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

Подумайте об этом на мгновение: WannaCry заражает множество компьютеров, потому что пользователи запускают его: если он может работать без участия пользователя, то случайное или случайное посещение вредоносного сайта может запустить что-то подобное прямо на вашем компьютере. Как быстро и как далеко, по-вашему, распространился бы тогда WannaCry?


Рейтинг:
1

jcsquire

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

Ярмарка dinkum. Я надеялся, что подобный вариант был доступен на языке, который является типобезопасным...кодирование svg и кодирование JavaScript (и Flash, в свое время) уродливы по сравнению с этим. Спасибо всем.


Рейтинг:
0

Patrice T

Цитата:
Я хотел бы сократить два клика до одного, так как в конечном итоге я хотел бы, чтобы студенты выбирали среди нескольких десятков демонстраций для запуска.
Вы не можете из-за глупой вещи под названием "Безопасность".
Загрузка и выполнение на стороне клиента-это решение клиента.
Мой браузер настроен так, что он всегда спрашивает меня, что делать с загрузкой, выполнением или хранением и где хранить, независимо от того, какой сертификат вы используете.
Цитата:
Есть ли на самом деле способ заставить браузер загрузить и автоматически запустить код

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