Partilhar via


Principais considerações de segurança do SQLXML

Aplica-se a:SQL ServerBanco de Dados SQL do Azure

Seguem-se as diretrizes de segurança para usar SQLXML para acesso a dados.

  • O fornecedor SQLXMLOLEDB expõe uma propriedade StreamFlags que permite definir flags indicando que funcionalidades SQLXML devem ser ativadas ou desativadas para cada instância específica. Pode usar esta propriedade para personalizar o seu uso do SQLXML e garantir que apenas os componentes que pretende estão ativados. Para mais informações, consulte Fornecedor SQLXMLOLEDB (SQLXML 4.0).

  • Quando ocorrem e são retornados erros SQLXML, podem incluir informações sobre o esquema da base de dados, como nomes de tabelas, nomes de colunas ou informações de tipos. Deve ter cuidado ao lidar com estes erros para que a informação sobre a sua instalação do SQL Server não seja facilmente descoberta pelos utilizadores quando não é pretendida ou necessária.

  • Quando usado para consultar ou enviar atualizações para o SQL Server, o SQLXML não estabelece limite para a quantidade de dados que pode ser trocada e não verifica o tamanho dos dados num payload SQLXML antes de tentar processá-los. Quando desenvolve a sua aplicação usando SQLXML, é sua responsabilidade garantir que há memória suficiente no sistema para processar os dados. Por exemplo, ao consultar dados do servidor, deve verificar se há espaço suficiente na memória do cliente para os receber. Da mesma forma, se estiver a carregar dados para o servidor, precisa de verificar se há memória suficiente disponível no servidor para os processar e espaço de armazenamento em disco disponível para armazenar os dados.

  • O SQLXML gera dinamicamente Transact-SQL consultas e comandos de atualização e envia-os para o SQL Server para execução. Esta é a única forma de SQLXML consultar e atualizar o servidor. Os resultados serão recebidos como um fluxo (de XML) ou como um conjunto de linhas.

  • Ao receber resultados de consulta, SQLXML não toma qualquer ação baseada no conteúdo dos dados que recebe. Não é feito processamento adicional com base no tipo ou conteúdo dos dados. Os dados nunca são tratados como código para executar ações.

  • Ao executar modelos XML, SQLXML traduz as consultas XPath e DBObject contidas no modelo submetido em comandos Transact-SQL que são depois executados no SQL Server. Estes comandos afetam apenas dados existentes. Os comandos gerados por SQLXML nunca alterarão a estrutura da base de dados. Os utilizadores devem emitir comandos explícitos para alterar a estrutura da base de dados. Por exemplo, incluindo-os num bloco sql:query de um modelo.

  • Ao executar consultas DBObject e instruções XPath sobre ficheiros de mapeamento, SQLXML não alterará os dados na base de dados de forma alguma.

  • O SQLXML pode fazer alterações de formatação aos dados dados com base nas diferenças entre os modelos de dados XML e SQL Server. Por exemplo, o formato para especificar uma hora é diferente. O SQLXML tentará resolver estas diferenças. Como resultado, alguma informação precisa pode ser perdida.

  • O SQLXML não estabelece limite para o tempo que demora a processar os dados. O processamento continuará até ocorrer um erro ou até que o processamento seja concluído.

  • O SQLXML não escreve no sistema de ficheiros. Se os utilizadores quiserem guardar os dados que recuperam da base de dados, devem fazê-lo no seu código.

  • O SQLXML permite aos utilizadores executar qualquer consulta SQL que desejem na base de dados. Esta funcionalidade nunca deve ser exposta a uma fonte insegura ou descontrolada, pois isto é essencialmente abrir a base de dados SQL sem provisão a nenhum utilizador.

  • Ao executar Updategrams, SQLXML traduz os blocos de atualização:sync em comandos DELETE, UPDATE e INSERT contra a instância do SQL Server. Estes comandos afetam apenas dados existentes. Os comandos gerados por SQLXML nunca alteram a base de dados. Os utilizadores devem emitir comandos explícitos para alterar a estrutura da base de dados. Por exemplo, incluindo-os num bloco sql:query de um modelo.

  • Ao executar DiffGrams, o SQLXML traduz o DiffGram em comandos DELETE, UPDATE e INSERT contra a instância do SQL Server. Estes comandos afetam apenas dados existentes. Os comandos gerados por SQLXML nunca alteram a base de dados. Os utilizadores devem emitir comandos explícitos para alterar a estrutura da base de dados. Por exemplo, incluindo-os num bloco sql:query de um modelo.

Ver também

Considerações de Segurança sobre SQLXML 4.0