Compartir a través de


Consideraciones básicas de seguridad de SQLXML

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 marcadores que indican qué funcionalidad SQLXML se debe habilitar o deshabilitar en cada instancia concreta. Puede utilizar esta propiedad para personalizar el uso de SQLXML y asegurarse de que sólo 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 los usuarios no puedan detectar fácilmente la información sobre la instalación de SQL Server donde no esté previsto ni sea necesario.

  • Cuando se utiliza 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 sobre el tamaño de los datos en una carga SQLXML antes de intentar procesarla. 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 y comandos de actualización Transact-SQL y los envía a SQL Server para la ejecución. Ésta es la única manera en la que SQLXML consulta y actualiza el servidor. Los resultados se reciben como una secuencia (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 DBOBJECT y XPath incluidas en la plantilla enviada en comandos Transact-SQL que posteriormente se ejecutan en SQL Server. Estos comandos sólo 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, pueden incluirlos 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 proporcionados basándose en 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 continúa hasta que se completa o hasta que se produce un error.

  • 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 comandos DELETE, UPDATE e INSERT en la instancia de SQL Server. Estos comandos sólo 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, pueden incluirlos en un bloque sql:query de una plantilla.

  • Al ejecutar DiffGrams, SQLXML traduce los DiffGrams en comandos DELETE, UPDATE e INSERT en la instancia de SQL Server. Estos comandos sólo 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, pueden incluirlos en un bloque sql:query de una plantilla.