Защищено паролем .NET ClickOnce развертывания? - PullRequest
11 голосов
/ 12 октября 2008

Как я могу защитить развернутое приложение ClickOnce паролем ? Нужно ли менять настройки IIS в Интернете или есть способ сделать это программно? Я использую Visual Studio 2005 (.NET 2.0).

Если мне нужно использовать веб-учетные данные, возможно ли автоматическое обновление приложения?

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

Спасибо!

Ответы [ 4 ]

12 голосов
/ 18 октября 2008

Я сам нашел возможное решение в этой статье MSDN: Развертывание и безопасность ClickOnce .

Аутентификация ASP.NET на основе форм

Если вы хотите контролировать, к каким развертываниям может обращаться каждый пользователь, не следует разрешать анонимный доступ к приложениям ClickOnce, развернутым на веб-сервере. Скорее, вы позволите пользователям получать доступ к установленным вами развертываниям на основе идентификатора пользователя (с использованием аутентификации Windows NT).

Если вы развертываете в среде без аутентификации Windows NT, можно попробовать использовать аутентификацию ASP.NET на основе форм для аутентификации пользователя. Однако ClickOnce не поддерживает аутентификацию на основе форм, поскольку использует постоянные файлы cookie; они представляют угрозу безопасности, потому что они находятся в кэше Internet Explorer и могут быть взломаны. Поэтому при развертывании приложений ClickOnce любой сценарий проверки подлинности, кроме проверки подлинности Windows NT, не поддерживается.

Передача аргументов

Дополнительное соображение безопасности возникает, если вам нужно передать аргументы в приложение ClickOnce. ClickOnce позволяет разработчикам предоставлять строку запроса для приложений, развернутых через Интернет. Строка запроса принимает форму последовательности пар имя-значение в конце URL-адреса, используемого для запуска приложения:

http://servername.adatum.com/WindowsApp1.application?username=joeuser

По умолчанию аргументы строки запроса отключены. Чтобы включить их, атрибут trustUrlParameters должен быть установлен в манифесте развертывания приложения . Это значение может быть установлено из Visual Studio и из MageUI.exe. Подробные инструкции по включению передачи строк запроса см. В разделе Практическое руководство. Получение информации о строке запроса в приложении ClickOnce.

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

Примечание. Аргументы строки запроса - единственный способ передать аргументы приложению ClickOnce при запуске. Вы не можете передавать аргументы приложению ClickOnce из командной строки.

1 голос
/ 27 мая 2010

Единственное решение, которое я когда-либо видел, - это здесь: Нажмите Один раз для проверки формы

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

1 голос
/ 12 октября 2008

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

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

0 голосов
/ 13 октября 2008

Установщик ClickOnce - это всего лишь пара файлов установщика, расположенных на вашем веб-сервере, верно? Итак, вы можете просто реализовать какую-то защиту каталогов для этих файлов. Вы можете сделать это на нескольких разных уровнях, я верю; например разрешения IIS или (если ваши пользователи находятся в вашем домене) разрешения NTFS.

Кроме того, разрешения IIS (все на самом деле?) Должны быть установлены программно.

...