Compartilhar via


Proteger aplicativos ClickOnce

Os aplicativos ClickOnce estão sujeitos a restrições de segurança de acesso de código no .NET Framework para ajudar a limitar o acesso que o código tem a recursos e operações protegidos. Por esse motivo, é importante que você entenda as implicações da segurança de acesso ao código para escrever seus aplicativos ClickOnce adequadamente. Seus aplicativos podem usar a Confiança Total ou usar zonas parciais, como as zonas de Internet e Intranet, para limitar o acesso.

Além disso, o ClickOnce usa certificados para verificar a autenticidade do editor do aplicativo e assinar os manifestos de aplicativo e implantação para provar que os arquivos não foram adulterados. A assinatura é uma etapa opcional, o que facilita a alteração dos arquivos do aplicativo após a geração dos manifestos. No entanto, sem manifestos assinados, é difícil garantir que o instalador do aplicativo não seja adulterado em ataques de segurança do tipo man-in-the-middle. Por esse motivo, recomendamos que você assine seus manifestos de aplicativo e implantação para ajudar a proteger seus aplicativos.

Zonas

Os aplicativos implantados usando a tecnologia ClickOnce são restritos a um conjunto de permissões e ações definidas pela zona de segurança. As zonas de segurança são definidas no navegador e são baseadas no local do aplicativo. A tabela a seguir lista as permissões padrão com base no local da implantação:

Local de implantação Zona de Segurança
Executar na Web Zona da Internet
Instalar da Web Zona da Internet
Instalar a partir do compartilhamento de arquivos de rede Zona de Intranet Local
Instalar do CD-ROM Confiança Total

As permissões padrão são baseadas no local do qual a versão original do aplicativo foi implantada; as atualizações para o aplicativo herdarão essas permissões. Se o aplicativo estiver configurado para verificar se há atualizações de um local da Web ou da rede e uma versão mais recente estiver disponível, a instalação original poderá receber permissões para a Zona da Internet ou intranet em vez de permissões de confiança total. Para impedir que os usuários sejam solicitados, um administrador do sistema pode especificar uma política de implantação do ClickOnce que define um editor de aplicativos específico como uma fonte confiável. Para computadores nos quais essa política é implantada, as permissões serão concedidas automaticamente e o usuário não será solicitado. Para obter mais informações, consulte Visão geral da implantação de aplicativo confiável. Para configurar a implantação de aplicativos confiáveis, o certificado pode ser instalado no nível do computador ou da empresa. Para obter mais informações, consulte Como adicionar um publicador confiável a um computador cliente para aplicativos ClickOnce.

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.

Políticas de segurança de acesso ao código

As permissões para um aplicativo são determinadas pelas configurações no <elemento trustInfo> do manifesto do aplicativo. O Visual Studio gera automaticamente essas informações com base nas configurações na página de propriedades de segurança do projeto. Um aplicativo ClickOnce recebe apenas as permissões específicas que ele solicita. Por exemplo, em que o acesso a arquivos requer permissões de confiança total, se o aplicativo solicitar permissão de acesso a arquivos, ele receberá apenas permissão de acesso a arquivos, não permissões de confiança total. Ao desenvolver seu aplicativo ClickOnce, você deve garantir que você solicite apenas as permissões específicas de que o aplicativo precisa. Na maioria dos casos, você pode usar as zonas da Internet ou intranet local para limitar seu aplicativo à confiança parcial. Para obter mais informações, consulte Como definir uma zona de segurança para um aplicativo ClickOnce. Se o aplicativo exigir permissões personalizadas, você poderá criar uma zona personalizada. Para obter mais informações, consulte Como definir permissões personalizadas para um aplicativo ClickOnce.

Observação

No ClickOnce para .NET Core e .NET 5 ou posterior, a Segurança de Acesso ao Código não tem suporte. No .NET Framework, o uso da Segurança de Acesso ao Código não é uma prática recomendada e não é recomendado.

Incluir uma permissão que não faz parte do conjunto de permissões padrão para a zona da qual o aplicativo é implantado fará com que o usuário final seja solicitado a conceder permissão no momento da instalação ou atualização. Para impedir que os usuários sejam solicitados, um administrador do sistema pode especificar uma política de implantação do ClickOnce que define um editor de aplicativos específico como uma fonte confiável. Em computadores em que essa política é implantada, as permissões serão concedidas automaticamente e o usuário não será solicitado.

Como desenvolvedor, é sua responsabilidade garantir que seu aplicativo seja executado com as permissões apropriadas. Se o aplicativo solicitar permissões fora de uma zona durante o tempo de execução, uma exceção de segurança poderá aparecer. O Visual Studio permite que você depure seu aplicativo na zona de segurança de destino e fornece ajuda no desenvolvimento de aplicativos seguros. Para obter mais informações, consulte Depurar aplicativos ClickOnce que usam System.Deployment.Application.

Para obter mais informações sobre segurança de acesso de código e ClickOnce, consulte Segurança de acesso de código para aplicativos ClickOnce.

Certificados de assinatura de código

Para publicar um aplicativo usando a implantação ClickOnce, você pode assinar os manifestos de aplicativo e de implantação usando um par de chaves pública/privada. As ferramentas para assinar um manifesto estão disponíveis na página Assinatura do Designer de Projeto. Para obter mais informações, consulte a Página de Assinatura de Documentos, Gerente de Projeto.

Depois que os manifestos forem assinados, as informações do editor com base na assinatura authenticode serão exibidas ao usuário na caixa de diálogo de permissões durante a instalação, para mostrar ao usuário que o aplicativo se originou de uma fonte confiável.

Para obter mais informações sobre ClickOnce e certificados, consulte ClickOnce e Authenticode.

ASP.NET autenticação baseada em formulário

Se você quiser controlar quais implantações cada usuário pode acessar, não deverá habilitar o acesso anônimo aos aplicativos ClickOnce implantados em um servidor Web. Em vez disso, você habilitaria os usuários a acessar as implantações instaladas com base na identidade de um usuário usando a autenticação do Windows.

O ClickOnce não dá suporte à autenticação baseada em formulários ASP.NET porque usa cookies persistentes; elas apresentam um risco de segurança porque residem no cache do navegador e podem ser hackeadas. Portanto, se você estiver implantando aplicativos ClickOnce, qualquer cenário de autenticação além da autenticação do Windows não será suportado.

Passar argumentos

Uma consideração de segurança adicional ocorrerá se você precisar passar argumentos para um aplicativo ClickOnce. O ClickOnce permite que os desenvolvedores forneçam uma cadeia de caracteres de consulta para aplicativos implantados na Web. A cadeia de caracteres de consulta assume a forma de uma série de pares nome-valor no final da URL usada para iniciar o aplicativo:

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

Por padrão, os argumentos de cadeia de caracteres de consulta são desabilitados. Para habilitá-los, o atributo trustUrlParameters deve ser definido no manifesto de implantação do aplicativo. Esse valor pode ser definido no Visual Studio e no MageUI.exe. Para obter etapas detalhadas sobre como habilitar a passagem de cadeias de caracteres de consulta, consulte Como recuperar informações de cadeia de caracteres de consulta em um aplicativo ClickOnce online.

Você nunca deve passar argumentos recuperados por meio de uma cadeia de caracteres de consulta para um banco de dados ou para a linha de comando sem verificar os argumentos para verificar se eles estão seguros. Argumentos não seguros são os que incluem caracteres de escape de linha de comando ou banco de dados que podem permitir que um usuário mal-intencionado manipule seu aplicativo para executar comandos arbitrários.

Observação

Argumentos de cadeia de caracteres de consulta são a única maneira de passar argumentos para um aplicativo ClickOnce na inicialização. Você não pode passar argumentos para um aplicativo ClickOnce da linha de comando.

Implantando assemblies ofuscados

O Visual Studio inclui a Proteção PreEmptiva gratuita – Comunidade do Dotfuscator, que você pode usar para proteger seus aplicativos ClickOnce por meio de ofuscação de código e medidas de proteção ativa. Para obter detalhes, consulte a seção ClickOnce do Guia do Usuário da Comunidade do Dotfuscator.