Proteger aplicativos ClickOnce
Os aplicativos do ClickOnce estão sujeitos às restrições de segurança de acesso do 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 compreender as implicações de segurança de acesso do código para desenvolver seus aplicativos do ClickOnce adequadamente. Seus aplicativos podem usar o modo Confiança Total ou zonas parciais, como as zonas da 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 do aplicativo e de implantação para provar que os arquivos não foram violados. Assinar é uma etapa opcional, o que facilita alterar os arquivos do aplicativo depois que os manifestos são gerados. No entanto, sem manifestos assinados, é difícil assegurar que o instalador do aplicativo não seja violado em ataques de segurança a intermediários. Por isso, recomendamos assinar seus manifestos do aplicativo e de implantação para ajudar a proteger seus aplicativos.
Zonas
Os aplicativos que são 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 baseadas no local do aplicativo. A tabela a seguir lista as permissões padrão com base no local de implantação:
Local da implantação | Zona de segurança |
---|---|
Executar da Web | Zona da Internet |
Instalar da Web | Zona da Internet |
Instalar do compartilhamento de arquivos de rede | Zona de Intranet Local |
Instalar de 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 as permissões. Se o aplicativo estiver configurado para verificar se há atualizações de um local na Web ou 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 evitar solicitações aos usuários, um administrador de sistema poderá especificar uma política de implantação ClickOnce que defina um editor de aplicativos específico como uma fonte confiável. Para computadores nos quais esta política é implantada, as permissões serão concedidas automaticamente e o usuário não será interpelado. Para saber mais, veja Visão geral da implantação de aplicativos confiáveis. Para configurar a implantação do aplicativo de confiança, o certificado poderá ser instalado no computador ou em nível corporativo. Para saber mais, veja Como adicionar um fornecedor 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 a código
As permissões para um aplicativo são determinadas pelas configurações no elemento <trustInfo> Element do manifesto do aplicativo. O Visual Studio gerencia automaticamente essas informações com base nas configurações da página de propriedades de Segurança do projeto. Um aplicativo do ClickOnce recebe apenas as permissões específicas que ele solicita. Por exemplo, onde o acesso ao arquivo exige 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 do ClickOnce, solicite apenas as permissões específicas que o aplicativo precisa. Na maioria dos casos, você pode usar zonas da Internet ou intranet local para limitar seu aplicativo à confiança parcial. Para saber mais, veja Como definir uma zona de segurança para um aplicativo ClickOnce. Se seu aplicativo exigir permissões personalizadas, você poderá criar uma zona personalizada. Para saber mais, veja Como definir permissões personalizadas para um aplicativo 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.
Incluir uma permissão que não faça parte do conjunto de permissões padrão para a zona da qual o aplicativo será implantado fará com que o usuário final seja solicitado a conceder permissão no momento da instalação ou atualização. Para evitar solicitações aos usuários, um administrador de sistema poderá especificar uma política de implantação ClickOnce que defina um editor de aplicativos específico como uma fonte confiável. Em computadores onde esta política é implantada, permissões serão concedidas automaticamente e o usuário não será interpelado.
Como um desenvolvedor, você é responsável por 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 depurar seu aplicativo na zona de segurança de destino e fornece ajuda para desenvolver aplicativos seguros. Para obter mais informações, consulte Depurar aplicativos do ClickOnce que usam System.Deployment.Application.
Para saber mais sobre a segurança de acesso do código e o ClickOnce, veja Segurança de acesso do código para aplicativos ClickOnce.
Certificados de assinatura de código
Para publicar um aplicativo usando a implantação do ClickOnce, você pode assinar os manifestos do aplicativo e de implantação para o aplicativo usando um par de chaves pública/privada. As ferramentas para assinar um manifesto estão disponíveis na página Assinando do Designer de Projeto. Para saber mais, veja Página de Assinatura, Designer de Projeto.
Depois que os manifestos são assinados, as informações do editor baseadas na assinatura Authenticode serão exibidas para o usuário na caixa de diálogo de permissões durante a instalação, para mostrar que o aplicativo é oriundo de uma fonte confiável.
Para saber mais sobre ClickOnce e certificados, veja ClickOnce e Authenticode.
Autenticação baseada em formulários ASP.NET
Se você deseja controlar quais implantações cada usuário pode acessar, não habilite acesso anônimo aos aplicativos do ClickOnce implantados em um servidor Web. Em vez disso, habilite acesso de usuários às implantações instaladas com base em uma identidade de usuário usando a autenticação do Windows.
O ClickOnce não dá suporte à autenticação baseada em formulários do ASP.NET, pois ela usa cookies persistentes; eles representam um risco à segurança porque residem no cache do navegador e podem ser violados. Portanto, se você estiver implantando aplicativos do ClickOnce, não haverá suporte a qualquer cenário de autenticação além da autenticação do Windows.
Passar argumentos
Você deverá ter uma consideração adicional sobre a segurança se tiver que passar argumentos para um aplicativo do 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 fim da URL utilizada para iniciar o aplicativo:
http://servername.adatum.com/WindowsApp1.application?username=joeuser
Por padrão, os argumentos da cadeia de caracteres de consulta estão desabilitados. Para habilitá-los, o atributo trustUrlParameters
deverá 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, confira 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 a um banco de dados ou linha de comando sem verificar os argumentos para garantir que eles sejam seguros. Os argumentos inseguros são os que incluem caracteres de escape da linha de comando ou banco de dados que poderiam permitir que um usuário mal-intencionado manipulasse o seu aplicativo e executasse comandos arbitrários.
Observação
Os argumentos de cadeia de caracteres de consulta são a única maneira de passar argumentos para um aplicativo do ClickOnce na inicialização. Você não poderá passar argumentos para um aplicativo do ClickOnce usando a linha de comando.
Implantando assemblies ofuscados
O Visual Studio inclui a versão gratuita da PreEmptive Protection – Dotfuscator Community, que pode ser usada para proteger os aplicativos ClickOnce por meio de ofuscação de código e medidas de proteção ativas. Para obter detalhes, veja Seção do ClickOnce do Guia do Usuário do Dotfuscator Community.