Защищенное паролем приложение .NET ClickOnce?

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

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

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

Спасибо!

Ответ 1

Я нашел возможное решение самостоятельно в этой статье MSDN: ClickOnce Deployment and Security.

Аутентификация на основе форм 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.

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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