Segurança de acesso do código para aplicativos ClickOnce

Os aplicativos ClickOnce são baseados no .NET Framework e estão sujeitos a restrições de segurança de acesso ao código. Por esse motivo, é importante compreender as implicações de segurança de acesso a código para desenvolver seus aplicativos ClickOnce adequadamente.

A segurança de acesso do código é um mecanismo no .NET Framework que ajuda a limitar o acesso que o código tem a recursos e operações protegidos. Você deve configurar as permissões de segurança de acesso de código para seu aplicativo ClickOnce para usar a zona apropriada para o local do instalador do aplicativo. Na maioria dos casos, você pode escolher a zona da Internet para um conjunto limitado de permissões ou a zona Intranet Local para um conjunto maior de permissões.

Observação

No ClickOnce para .NET Core e .NET 5 ou posterior, esse recurso não tem suporte. Para obter mais informações, confira ClickOnce para .NET.

Segurança de acesso do código ClickOnce padrão

Por padrão, um aplicativo ClickOnce recebe permissões de Confiança Total quando é instalado ou executado em um computador cliente.

  • Um aplicativo que tem permissões de Confiança Total tem acesso irrestrito a recursos como o sistema de arquivos e o Registro. Isso potencialmente permite que seu aplicativo (e o sistema do usuário final) sejam explorados por código mal-intencionado.

  • Quando um aplicativo exige permissões de Confiança Total, o usuário final pode ser solicitado a conceder permissões ao aplicativo. Isso significa que o aplicativo não fornece realmente uma experiência ClickOnce, e o prompt pode ser potencialmente confuso para usuários menos experientes.

    Observação

    Ao instalar um aplicativo de mídia removível, como um CD-ROM, nenhum prompt é exibido para o usuário. Além disso, um administrador de rede pode configurar a política de rede para que os usuários não sejam solicitados quando instalarem um aplicativo de uma fonte confiável. Para saber mais, confira Visão geral da implantação de aplicativos confiáveis.

    Para restringir as permissões para um aplicativo ClickOnce, você pode modificar as permissões de segurança de acesso de código para seu aplicativo para solicitar a zona que melhor se adapta às permissões que seu aplicativo exige. Na maioria dos casos, você pode selecionar a zona na qual o aplicativo está sendo implantado. Por exemplo, se o aplicativo for um aplicativo empresarial, você poderá usar a zona Intranet Local. Se o aplicativo for um aplicativo da Internet, você poderá usar a zona Internet.

Permissões de Segurança do ClickOnce

Você sempre deve configurar seu aplicativo ClickOnce para solicitar a zona apropriada para limitar as permissões de segurança de acesso ao código. Você pode configurar permissões de segurança na página Segurança do Designer de Projeto.

A página Segurança no Designer de Projeto contém uma caixa de seleção Habilitar Configurações de Segurança do ClickOnce. Quando essa caixa de seleção é marcada, as solicitações de permissão de segurança são adicionadas ao manifesto de implantação do seu aplicativo. No momento da instalação, o usuário será solicitado a conceder permissões se as permissões solicitadas excederem as permissões padrão para a zona da qual o aplicativo é implantado. Para obter mais informações, confira Como habilitar as configurações de segurança do ClickOnce.

Os aplicativos implantados de locais diferentes recebem diferentes níveis de permissões sem solicitação. Por exemplo, quando um aplicativo é implantado da Internet, ele recebe um conjunto altamente restritivo de permissões. Quando instalado de uma Intranet local, ele recebe mais permissões e, quando instalado de um CD-ROM, recebe permissões de Confiança Total.

Como ponto de partida para configurar permissões, você pode selecionar uma zona de segurança na lista Zona, na página Segurança. Se o aplicativo for potencialmente implantado em mais de uma zona, selecione a zona com as permissões mínimas. Para saber mais, veja Como definir uma zona de segurança para um aplicativo ClickOnce.

As propriedades que podem ser definidas variam de acordo com o conjunto de permissões; nem todos os conjuntos de permissões têm propriedades configuráveis. Para obter mais informações sobre a lista completa de permissões que seu aplicativo pode solicitar, confira System.Security.Permissions. Para obter mais informações sobre como definir permissões para uma zona personalizada, confira Como definir permissões personalizadas para um aplicativo ClickOnce.

Depurar um aplicativo que tem permissões restritas

Como desenvolvedor, você provavelmente executará seu computador de desenvolvimento com permissões de Confiança Total. Portanto, você não vê as mesmas exceções de segurança ao depurar o aplicativo que os usuários poderão ver ao executá-lo com permissões restritas.

Para capturar essas exceções, você precisa depurar o aplicativo com as mesmas permissões que o usuário final. A depuração com permissões restritas pode ser habilitada na página Segurança do Designer de Projeto.

Quando você depura um aplicativo com permissões restritas, exceções serão geradas para quaisquer demandas de segurança de código que não tenham sido habilitadas na página Segurança. Um auxiliar de exceção será exibido, fornecendo sugestões sobre como modificar seu código para evitar a exceção.

Além disso, quando você escreve código, o recurso IntelliSense no Editor de Código desabilitará todos os membros que não estão incluídos nas permissões de segurança que você configurou.

Para saber mais, confira Como depurar um aplicativo ClickOnce com permissões restritas.

Permissões de segurança para aplicativos hospedados pelo navegador

O Visual Studio fornece os seguintes tipos de projeto para aplicativos WPF (Windows Presentation Foundation):

  • Aplicativo WPF do Windows

  • Aplicativo de navegador da Web do WPF

  • Biblioteca de Controles Personalizados do WPF

  • Biblioteca de Serviços do WPF

    Desses tipos de projeto, somente os Aplicativos do Navegador da Web do WPF são hospedados em um navegador da Web e, portanto, exigem configurações especiais de implantação e segurança. As configurações de segurança padrão para esses aplicativos são as seguintes:

  • Habilitar configurações de segurança do ClickOnce

  • Este é um aplicativo de confiança parcial

  • Zona da Internet (com a permissão padrão definida para Aplicativos de Navegador da Web do WPF selecionada)

    Na caixa de diálogo Configurações de Segurança Avançadas, a caixa de seleção Depurar este aplicativo com o conjunto de permissões selecionado está marcada e desabilitada. Isso ocorre porque Depurar na Zona não pode ser desativada para aplicativos hospedados pelo navegador.