Мне нужна помощь в понимании безопасности Silverlight 4 - PullRequest
4 голосов
/ 01 декабря 2010

Кто-нибудь еще думает, что безопасность Silverlight 4 немного сумасбродна?

Посмотрите на следующий сценарий:

  1. Silverlight при установке в доверенное приложение и из режима браузера позволяетчтобы найти файл, используя диалог открытия файла.
  2. Вам требуется имя пути к файлу, чтобы открыть его из любой автоматизации COM.Например (excel / word), но это может быть что угодно.
  3. Невозможно получить полный путь к файлу из диалогового окна из-за ограничений безопасности.
  4. Однако вы можете использовать COM FileSystemObject - делать то, что вы хотите для файловой системы пользователя, включая createпапки, перемещать и удалять файлы.

Иными словами, почему весь шум вокруг безопасности в Silverlight, который фактически мешает реальным случаям использования в бизнесе, когда возможно получить доступ к любому файлу в любом случае с помощью COM?

СказатьИначе говоря, если пользователь запускает вредоносное приложение Silverlight, маловероятно, что они скажут - да ладно, это был СОМ.После этого COM вызывал приложение Silverlight.

Вот что я имею в виду ....

  • Пользователь просматривает файл - c: \ myFile.xls
  • Silverlight не позволяет вам получить путь (по соображениям безопасности)
  • Silverlight позволяет работать только с моими документами
  • Используя COM, вы можете делать все, что захотите, с файловой системой в фоновом режимев любом случае.Включая копирование этого файла в мои документы, если бы вы знали имя!Но помимо этого вы можете стереть любой файл, если он не используется.

На мой взгляд, модель безопасности Silverlight несовершенна, либо они должны были предоставить разработчикам полное доверие и позволить нам запускать приложения, как если бы они работали локально

или

Не разрешено Silverlight для доступа к COM.

Это только у меня, или кто-то еще может видеть, что это плохая реализация?

Это вызывает предупреждения безопасности:

OpenFileDialog flDialog = new OpenFileDialog();
FileInfo fs = flDialog.File;
string fileName = fs.FullName;

Это не

dynamic fileSystem = AutomationFactory.CreateObject("Scripting.FileSystemObject");
fileSystem.CopyFile(anyFileName,anyDestination); 

Ответы [ 4 ]

2 голосов
/ 01 декабря 2010

Я не согласен с вашей точкой зрения. Тот факт, что вы можете делать практически все, что позволяет установленный COM-объект, является , а не причиной для изменения целой связки существующего кода Silverlight, чтобы позволить вам делать те же самые вещи.

Почему? Потому что в процессе открытия этого кода также увеличивается вероятность того, что каким-то непреднамеренным образом этот же код может быть запущен, когда компонент Silverlight не работает в доверенном режиме. Если бы это случилось, даже если бы СМИ обошли все вокруг, и репутация Silverlight, вероятно, несправедливо, была бы в клочья.

Лично я весьма доволен очень осторожным подходом к безопасности, который MS использует с Silverlight.

1 голос
/ 31 октября 2011

Microsoft гарантирует, что общедоступный API-интерфейс Silverlight работает одинаково для платформ Windows и MacOS. Таким образом, функциональность во многом ограничена общим знаменателем и технической осуществимостью. Пожалуйста, рассматривайте COM Introp как особый случай, касающийся только платформы Windows и только в режиме полного доверия, и он не будет работать так же для других платформ. Таким образом, ограничения безопасности действительны, поскольку они одинаковы для обоих миров с точки зрения повторного использования API.

1 голос
/ 01 декабря 2010

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

Спасибо Энтони за то, что указал на это.

Разработчики должны знать об определении доверия, которое мы обсуждаем здесь. Запуск приложения Silverlight в полном доверии с повышенными привилегиями - это НЕ то же самое, что запуск локального приложения на основе Silverlight для Windows. Это также намного более ограничительно, чем ActiveX.

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

0 голосов
/ 27 февраля 2012

Я согласен с оригинальным постером.Я думаю, что это плохая реализация.Нам предоставляется встроенный диалог для поиска файла, включая структуру каталогов.Мы можем выбрать файл и получить объект FileInfo, но безопасность не позволяет нам получить полное имя (каталог и имя файла).Зачем?Как это улучшает безопасность?С чего начать диалог открытия файла?

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

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

Кажется, это должно быть невероятно просто.Но эта «мера безопасности», которая удерживает нас от получения каталога, выбранного пользователем из встроенного диалогового окна открытия файла, делает его таким, что мы не можем использовать этот диалог для той цели, для которой он был создан.

альтернатива?Есть ли способ выбрать файлы, используя эти динамические объекты?Должен ли я написать свой собственный инструмент выбора файлов, используя те объекты, которые могут изменить файловую систему?Поскольку мне ничего не нужно, кроме чтения файла, и потому что я где-то читал, что у нас есть доступ к потоку файлов ... есть ли способ использовать поток файлов, чтобы открыть файл для чтения, используя AutomationFactory

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...