Consideraciones básicas de seguridad de SQLXML

Se aplica a:SQL ServerAzure SQL Database

A continuación se indican instrucciones de seguridad para utilizar SQLXML en el acceso a datos.

  • El proveedor SQLXMLOLEDB expone una propiedad StreamFlags que permite establecer marcas que indican qué funcionalidad de SQLXML debe habilitarse o deshabilitarse para cada instancia específica. Puede utilizar esta propiedad para personalizar el uso de SQLXML y asegurarse de que solo se habilitan los componentes que desea. Para obtener más información, vea Proveedor SQLXMLOLEDB (SQLXML 4.0).

  • Cuando se producen y se devuelven errores SQLXML, pueden incluir información sobre el esquema de la base de datos como nombres de tabla, nombres de columna o información de tipo. Debe tener cuidado al controlar estos errores para que la información sobre la instalación de SQL Server no sea fácilmente reconocible por los usuarios en los que no está previsto o necesario.

  • Cuando se usa para consultar o enviar actualizaciones a SQL Server, SQLXML no establece ningún límite en la cantidad de datos que se pueden intercambiar y no realiza ninguna comprobación del tamaño de los datos en una carga de SQLXML antes de intentar procesarlos. Al desarrollar la aplicación con SQLXML, debe asegurarse de que existe suficiente memoria en el sistema para procesar los datos. Por ejemplo, al consultar datos del servidor, debe comprobar que existe suficiente espacio en memoria en el cliente para recibirlos. De la misma forma, si carga los datos en el servidor, debe comprobar que existe suficiente memoria disponible en el servidor para procesarlos y suficiente espacio de almacenamiento en disco disponible en el servidor para almacenar los datos.

  • SQLXML genera dinámicamente consultas Transact-SQL y actualiza comandos y los envía a SQL Server para su ejecución. Ésta es la única manera en la que SQLXML consulta y actualiza el servidor. Los resultados se reciben como un flujo (de XML) o como un conjunto de filas.

  • Al recibir los resultados de la consulta, SQLXML no toma ninguna medida basada en el contenido de los datos que recibe. No se realiza ningún procesamiento adicional basado en el tipo ni el contenido de los datos. Los datos nunca se tratan como código con el que ejecutar acciones.

  • Al ejecutar plantillas XML, SQLXML traduce las consultas XPath y DBObject contenidas en la plantilla enviada en comandos transact-SQL que, a continuación, se ejecutan en SQL Server. Estos comandos solo afectan a datos existentes. Los comandos que genera SQLXML nunca modifican la estructura de la base de datos. Los usuarios deben ejecutar comandos explícitos para modificar la estructura de la base de datos. Por ejemplo, incluyéndolas en un bloque sql:query de una plantilla.

  • Al ejecutar consultas DBOBJECT e instrucciones XPath en los archivos de asignación, SQLXML no modifica de forma alguna los datos de la base de datos.

  • SQLXML puede realizar cambios de formato en los datos especificados en función de las diferencias entre los modelos de datos XML y SQL Server. Por ejemplo, el formato para especificar una hora es distinto. SQLXML intentará resolver estas diferencias. Como resultado, es posible que se pierdan algunos datos de precisión.

  • SQLXML no establece ningún límite en la cantidad de tiempo que tarda en procesar los datos. El procesamiento continuará hasta que se produzca un error o se complete el procesamiento.

  • SQLXML no escribe en el sistema de archivos. Si los usuarios desean guardar los datos que recuperan de la base de datos, deben hacerlo en el código.

  • SQLXML permite a los usuarios ejecutar cualquier consulta SQL que deseen en la base de datos. Esta funcionalidad nunca se debe exponer a un origen sin seguridad ni control, ya que básicamente se abre la base de datos SQL a cualquier usuario sin ninguna disposición.

  • Al ejecutar diagramas de actualización, SQLXML traduce los bloques updg:sync en los comandos DELETE, UPDATE e INSERT en la instancia de SQL Server. Estos comandos solo afectan a datos existentes. Los comandos que genera SQLXML nunca modifican la base de datos. Los usuarios deben ejecutar comandos explícitos para modificar la estructura de la base de datos. Por ejemplo, incluyéndolas en un bloque sql:query de una plantilla.

  • Al ejecutar DiffGrams, SQLXML convierte el DiffGram en comandos DELETE, UPDATE e INSERT en la instancia de SQL Server. Estos comandos solo afectan a datos existentes. Los comandos que genera SQLXML nunca modifican la base de datos. Los usuarios deben ejecutar comandos explícitos para modificar la estructura de la base de datos. Por ejemplo, incluyéndolas en un bloque sql:query de una plantilla.

Consulte también

Consideraciones de seguridad de SQLXML 4.0