Recursos de design de segurança do ADO
As seções a seguir descrevem os recursos de design de segurança do ADO (ActiveX Data Objects) 2.8 e posterior. Essas alterações foram feitas no ADO 2.8 para aprimorar 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, será 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 está ciente de qualquer problema de compatibilidade antes de implantar o aplicativo atualizado.
Cenários de acesso a arquivos do Internet Explorer
Os recursos a seguir afetam o modo de funcionamento do ADO 2.8 e posterior 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
No ADO 2.7 e anterior, a seguinte mensagem de aviso é exibida quando uma página da Web com script tenta executar o código do ADO em 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.
No ADO 2.8 e posterior, a mensagem anterior deixou de ser 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, conhecendo as consequências de cada uma das escolhas:
Se o usuário confiar no site, um clique em OK permitirá que todos os códigos de segurança de disco (todos os métodos e as propriedades do ADO com exceção das APIs acessíveis em disco descritas mais adiante neste tópico) sejam executados na janela do navegador.
Se o usuário não confiar no site, um clique em Cancelar bloqueará a execução do código do ADO para acesso a dados.
Código acessível em disco agora limitado a sites confiáveis
Foram feitas outras alterações de design no ADO 2.8 que restringem especificamente a capacidade de um conjunto limitado de APIs, o que pode expor o potencial de leitura ou de gravação em arquivos no computador local. Estes são os métodos de API que foram ainda mais limitados visando a segurança durante a execução do Internet Explorer:
Para o objeto ADO Stream, se os métodos LoadFromFile ou SaveToFile são usados.
Para o objeto ADO Recordset, se o método Save ou Open, como quando a opção adCmdFile está definida ou quando o MSPersist (Provedor de Persistência do Microsoft OLE DB) é usado.
Nesses conjuntos limitados de funções potencialmente acessíveis em disco, o seguinte comportamento ocorrerá no 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 já foi adicionado à lista de zonas de Sites Confiáveis, o código é executado no navegador e o acesso é permitido 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 a arquivos locais será negado.
Observação
No ADO 2.8 e posterior, o usuário não é alertado nem 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 em um objeto Recordset ativo e retorna um erro. O erro ocorre independentemente de a página ser proveniente de um site da Web registrado na lista de Sites Confiáveis.
Alterações no tratamento dos provedores OLE DB e da segurança integrada
Ao analisar o ADO 2.7 e as versões anteriores em busca de 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 da segurança integrada podem potencialmente permitir que páginas da Web com script reutilizem o objeto Connection do 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 posterior lida com os provedores OLE DB, dependendo de como eles optaram por fornecer ou não a segurança integrada.
Para as páginas da Web que são carregadas de sites listados na lista de zonas de Sites Confiáveis, a tabela a seguir fornece um detalhamento de como o ADO 2.8 e posterior gerencia as conexões ADO em cada caso.
Configurações do IE para autenticação de usuário e logon | O provedor dá suporte à "segurança integrada" e o UID e a 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 está definido como SSPI (nenhum UID/nenhuma PWD é especificada) |
---|---|---|---|
Logon automático com o nome de usuário e a senha atuais | Permitir conexão | Permitir conexão | Permitir conexão |
Solicitação de nome de usuário e senha | Permitir conexão | Falha na conexão | Falha na conexão |
Logon automático somente na zona da intranet | Permitir conexão | Solicitar ao usuário com um aviso de segurança | Solicitar ao usuário com um aviso 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 é exibido, 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 execute uma ação de acordo.
Observação
Para os sites não confiáveis (ou seja, os sites não listados na lista de zonas de Sites Confiáveis), se o provedor também não for confiável (conforme já discutido 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 a identidade dele. Se o usuário clicar em OK no primeiro aviso, as configurações do Internet Explorer e o código de comportamento de resposta descritos na tabela anterior serão executados.
Como controlar se o texto da senha é retornado em cadeias de conexão ADO
Quando você tenta obter o valor da propriedade ConnectionString em um objeto Connection do ADO, os seguintes eventos ocorrem:
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.
Dependendo da configuração no provedor OLE DB da propriedade DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, as senhas são incluídas com outras informações de cadeia de conexão retornadas.
Por exemplo, se a propriedade dinâmica Persist Security Info de Connection do ADO for 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 ADO é permitida.
Como verificar dispositivos que não são de arquivos ao carregar e salvar conjuntos de registros ou fluxos
Para o ADO 2.7 e anterior, as operações de entrada/saída de arquivo, como Abrir e Salvar, que foram usadas para ler e gravar dados baseados em arquivo, podem, em alguns casos, permitir que seja usado um nome de arquivo ou uma URL que especificou um tipo de arquivo não baseado em disco. Por exemplo, LPT1, COM2, PRN.TXT, AUX podem ser usados como um alias para a entrada/saída entre impressoras e dispositivos auxiliares no sistema por meio de alguns
No 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 de saída especificado em uma URL ou em um nome de arquivo seja um arquivo real.
Observação
A verificação de tipo de arquivo, conforme descrito nesta seção, só se aplica ao Windows 2000 e posterior. Ela 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.