Partilhar via


Recursos de design de segurança do ADO

As seções a seguir descrevem os recursos de design de segurança no ADO (ActiveX Data Objects) 2.8 e posterior. Essas alterações foram feitas no ADO 2.8 para melhorar a segurança. O ADO 6.0, que está incluído no Windows DAC 6.0 no Windows Vista, é funcionalmente equivalente ao ADO 2.8, que foi incluído no MDAC 2.8 no Windows XP e no Windows Server 2003. Este tópico fornece informações sobre como proteger melhor seus aplicativos no ADO 2.8 ou posterior.

Importante

Se você estiver atualizando seu aplicativo de uma versão anterior do ADO, é recomendável testar seu aplicativo atualizado em um computador de não produção antes de implantá-lo nos clientes. Dessa forma, você pode garantir que esteja ciente de quaisquer problemas de compatibilidade antes de implantar seu aplicativo atualizado.

Cenários de acesso a arquivos do Internet Explorer

As funcionalidades a seguir afetam o funcionamento do ADO 2.8 e versões posteriores quando ele é usado em páginas da Web com script no Internet Explorer.

Caixa de mensagem de aviso de segurança revisada e aprimorada agora usada para alertar os usuários

Para o ADO 2.7 e anteriores, a seguinte mensagem de aviso é exibida quando uma página da Web com script tenta executar o código ADO de um provedor não confiável:

This page accesses data on another domain. Do you want to allow this? To
avoid this message in Internet Explorer, you can add a secure Web site to
your Trusted Sites zone on the Security tab of the Internet Options dialog
box.

Para o ADO 2.8 e posterior, a mensagem anterior não é mais exibida. Em vez disso, a seguinte mensagem é exibida neste contexto:

This Website uses a data provider that may be unsafe. If you trust the
Website, click OK, otherwise click Cancel.

A mensagem anterior permite que o usuário tome uma decisão informada, sabendo as consequências para qualquer uma das opções:

  • Se o usuário confiar no site, clicar em OK permitirá que todo o código seguro para disco (todos os métodos e propriedades do ADO, com exceção das APIs acessíveis a disco descritas posteriormente neste tópico) seja executado na janela do navegador.

  • Se o usuário não confiar no site, clicar em Cancelar bloqueará a execução completa do código ADO para o acesso a dados.

Código acessível em disco limitado agora a sites confiáveis

Foram feitas alterações de design adicionais no ADO 2.8 que restringem especificamente a capacidade de um conjunto limitado de APIs, o que pode expor o potencial de leitura ou gravação em arquivos no computador local. Aqui estão os métodos de API que foram ainda mais restritos para segurança ao executar o Internet Explorer:

Para esses conjuntos limitados de funções potencialmente acessíveis a disco, o seguinte comportamento ocorre para o ADO 2.8 e posterior, se qualquer código que usa esses métodos for executado no Internet Explorer:

  • Se o site que forneceu o código tiver sido adicionado anteriormente à lista de zonas de Sites Confiáveis, o código será executado no navegador e o acesso será concedido aos arquivos locais.

  • Se o site não aparecer na lista de zonas de Sites Confiáveis, o código será bloqueado e o acesso aos arquivos locais será negado.

    Nota

    No ADO 2.8 e posterior, o usuário não é alertado ou aconselhado a adicionar sites à lista de zonas de Sites Confiáveis. Portanto, o gerenciamento da lista de Sites Confiáveis é responsabilidade daqueles que estão implantando ou dando suporte a aplicativos baseados em site que exigem acesso ao sistema de arquivos local.

Acesso bloqueado à propriedade ActiveCommand em objetos Recordset

Ao ser executado no Internet Explorer, o ADO 2.8 agora bloqueia o acesso à propriedade ActiveCommand para um objeto do Recordset ativo e retorna um erro. O erro ocorre independentemente de a página vir de um site registrado na lista de Sites Confiáveis.

Alterações na manipulação de provedores OLE DB e segurança integrada

Ao revisar o ADO 2.7 e versões anteriores para possíveis problemas de segurança e preocupações, o seguinte cenário foi descoberto:

Em alguns casos, os provedores OLE DB que dão suporte à propriedade DBPROP_AUTH_INTEGRATED de Segurança Integrada podem potencialmente permitir que páginas da Web com script reutilizem o objeto Conexão ADO para se conectarem involuntariamente a outros servidores usando as credenciais de logon atuais dos usuários. Para evitar isso, o ADO 2.8 e posteriores gerenciam provedores OLE DB com base em sua escolha de oferecer ou não segurança integrada.

Para páginas da Web carregadas de sites listados na zona de Sites Confiáveis, a tabela a seguir fornece um detalhamento de como o ADO 2.8 e versões posteriores gerenciam conexões ADO em cada caso.

Configurações do IE para autenticação de usuário, logon O provedor dá suporte a "Segurança Integrada" e UID e PWD são especificados (SQLOLEDB) O provedor não dá suporte à "Segurança Integrada" (JOLT, MSDASQL, MSPersist) O provedor dá suporte à "Segurança Integrada" e é definido como SSPI (nenhuma UID/PWD é especificada)
Logon automático com nome de usuário e senha atuais Permitir conexão Permitir conexão Permitir conexão
Solicitar nome de usuário e senha Permitir conexão Falha na conexão Falha na conexão
Logon automático somente na zona intranet Permitir conexão Alertar o usuário com um aviso de segurança Alertar o usuário com uma advertência de segurança
Logon anônimo Permitir conexão Falha na conexão Falha na conexão

No caso em que um aviso de segurança agora aparece, a caixa de mensagem informa aos usuários:

This Website is using your identity to access a data source. If you trust this Website, click OK, otherwise click Cancel.

A mensagem anterior permite que o usuário tome uma decisão mais informada e prossiga adequadamente.

Nota

Para sites não confiáveis (ou seja, sites não listados na lista de zonas de Sites Confiáveis), se o provedor também não for confiável (conforme discutido anteriormente nesta seção), o usuário poderá ver dois avisos de segurança em uma linha, um aviso sobre o provedor não seguro e um segundo aviso sobre a tentativa de usar sua identidade. Se o usuário clicar em OK para o primeiro aviso, as configurações do Internet Explorer e o código de comportamento de resposta descritos na tabela anterior serão executados.

Controlando se o texto da senha é retornado em cadeias de conexão do ADO

Quando você tenta obter o valor da propriedade ConnectionString de um objeto Connection do ADO, ocorrem os seguintes eventos:

  1. Se a conexão estiver aberta, uma chamada de inicialização será feita ao provedor OLE DB subjacente para obter a cadeia de conexão.

  2. Dependendo da configuração no provedor OLE DB da propriedade DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, as senhas são incluídas junto com outras informações de cadeia de conexão retornadas.

Por exemplo, se a propriedade dinâmica conexão do ADO Persist Security Info estiver definida como True, as informações de senha serão incluídas na cadeia de conexão retornada. Caso contrário, se o provedor subjacente tiver definido a propriedade como False (por exemplo, com o provedor SQLOLEDB), as informações de senha serão omitidas na cadeia de conexão retornada.

Se você estiver usando provedores OLE DB de terceiros (ou seja, não Microsoft) com o código do aplicativo ADO, poderá verificar como a propriedade DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO é implementada para determinar se a inclusão de informações de senha com cadeias de conexão do ADO é permitida.

Verificando se há dispositivos não arquivos ao carregar e salvar conjuntos de registros ou fluxos

Para o ADO 2.7 e anteriores, as operações de entrada/saída de arquivo, como Open e Save que foram usadas para ler e gravar dados baseados em arquivo, podem, em alguns casos, permitir que uma URL ou nome de arquivo seja usado que especificou um tipo de arquivo não baseado em disco. Por exemplo, LPT1, COM2, PRN.TXT, AUX podem ser usados como nomes alternativos para a entrada/saída entre impressoras e dispositivos auxiliares no sistema usando determinados canais.

Para o ADO 2.8 e posterior, essa funcionalidade foi atualizada. Para abrir e salvar objetos Recordset e Stream, o ADO agora executa uma verificação de tipo de arquivo para garantir que o dispositivo de entrada ou saída especificado em uma URL ou nome de arquivo seja um arquivo real.

Nota

A verificação de tipo de arquivo, conforme descrito nesta seção, só se aplica ao Windows 2000 e posterior. Ele não se aplica a situações em que o ADO 2.8 ou posterior está em execução em versões anteriores do Windows, como o Windows 98.